1樓:匿名使用者
1、建立測試表,
create table test_int(value varchar2(50));
2、插入測試資料
insert into test_int values('qwer?d=234');
insert into test_int values('afhkashf');
commit;
3、查詢表中全量資料,select t.*, rowid from test_int t;
4、編寫sql,獲取字串中的指定字元;
select t.*,
case
when instr(value, 'd=') = 0 then
null
else
substr(value,
instr(value, 'd='),
case
when instr(value, '&') = 0 then
10else
instr(value, '&') - instr(value, 'd=')
end)
end a
from test_int t;
2樓:
用函式實現會比較方便,如果是sql server的話,可以建立如下函式:
create function dbo.get01 (@s nvarchar(1000))
returns nvarchar(1000)
asbegin
declare @idx int, @t nvarchar(1000)
set @idx = charindex('?d=', @s)
if @idx < 1
begin
endif @idx > 0
begin
set @t = right(@s, len(@s) - @idx)
set @idx = charindex('&', @t)
if @idx > 0
begin
set @t = left(@t, @idx - 1)
endend
return @t
endgo
呼叫示例:
select s.txt, dbo.get01(s.txt) as val
from (
union
select 'sparetest?d=123&ewv'
union
select 'afhkashf'
union
select 'afdafda?b=c029&d=456'
) s結果:
3樓:高田沙希
select substring(欄位,0,charindex('.',欄位,0)+3) from 表 測試過的~
4樓:匿名使用者
sql>
1 row created.
sql> commit;
commit complete.
sql> select * from ckt1;
asfdwe?d=234&dhewu
sql> select instr(str,'d=') loc from ckt1;
loc----------
8sql> select instr(str,'d=') starloc,instr(str,'&') endloc from ckt1;
starloc endloc
---------- ----------
8 13
sql> select substr(str,instr(str,'d='),instr(str,'&')) newstr from ckt1;
newstr
d=234&dhewu
sql> select substr(str,instr(str,'d='),instr(str,'&')-instr(str,'d=')) newstr from ckt1;
newstr
d=234
這樣應該可以
sql語句,如何擷取指定欄位某一個字元出現後的後面的字串嗎
5樓:教育仁昌
工具/材料:management studio。
1、首先在桌面上,點選「management studio」圖示。
2、之後在該介面中,點選左上角「新建查詢」選項。
3、接著在該介面中,輸入擷取指定欄位某一個字元出現後的後面的字串的sql語句「
select substring(name,charindex(',',name)+1,len(name)-charindex(',',name)) from test2;」。
4、然後在該介面中,點選左上方「執行」按鈕。
5、最後在該介面中,顯示擷取指定欄位某一個字元出現後的後面的字串成功。
6樓:司馬刀劍
sql語句可以擷取指定欄位後面的字串,以sqlserver為例,需要用到charindex函式和substring函式。
如test表中有如下資料,要求截圖str欄位中逗號後邊的內容。
可用如下語句:
select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;
結果截圖:
charindex函式說明:
語法:charindex ( expression1 , expression2 , [ start_location ] )
引數:expression1
一個表示式,其中包含要尋找的字元的次序。expression1 是一個短字元資料型別分類的表示式。
expression2
一個表示式,通常是一個用於搜尋指定序列的列。expression2 屬於字串資料型別分類。
start_location
在 expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。
substring函式說明:
語法:substring( expression, start, length)
引數:expression 字串、二進位制字串、文字、影象、列或包含列的表示式start 整數或可以隱式轉換為 int 的表示式,指定子字串的開始位置length 整數或可以隱式轉換為 int 的表示式,指定子字串的長度
sql怎麼篩選出字串中指定規則的字元
7樓:匿名使用者
你這個應該是以json格式儲存的,查出來以後用json陣列解析,比較容易,資料庫層面處理太複雜。。。
8樓:匿名使用者
可用substring函式來查詢。
比如表中有如下資料:
現在要查詢第二位字元為「s」的資料,可用如下語句:
select * from test where substring(str,2,1)='s'
結果截圖:
substring函式說明:
substring函式需要三個引數,其中第一個引數是要擷取的字串,第二個引數是要查詢字串的起始位,第三個引數為擷取的字元長度。
9樓:匿名使用者
substr()加instr()可以滿足。如果是標準的json,可以用json格式轉換輸出
10樓:匿名使用者
select
(substring
('asdsaj "name1":"董立冬","change":"dsadsa",pass:dasd,"name2":"東方(...)"',
charindex('name1":"','asdsaj "name1":"董立冬","change":
"dsadsa",pass:dasd,"name2":"東方(...
)"')+8,
charindex('","change":"','asdsaj "name1":"董立冬","change":
"dsadsa",pass:dasd,"name2":"東方(...
)"')-(charindex('name1":"','asdsaj "name1":"董立冬","change":
"dsadsa",pass:dasd,"name2":"東方(...
)"')+8)
))as'name1',``````
如果「name」相同,都叫做「name」的話,定義一個變數,每取得一個name值後將欄位值截掉已取的name那段,保留後面的進行第二次取name值。
實在嫌效率低或者麻煩的話寫個正則提取函式應該也可以處理。
11樓:匿名使用者
必須用sql麼,我有更簡單的方法進行篩選
sql 如何擷取一個欄位裡某一字串中間的字元?
12樓:魅
--這個查詢需要注意的是qwer後的需要查詢的字串必須是一個空格,不能有的是一個空格有的是兩個。也就是格式要固定。
--定義引數
create table #a (string varchar(max))
declare @sql varchar(max)
declare @a varchar(max)
select @a ='asdf qwer zxcv 1234 qwer yuchor 3452 qwer abcd 7893'--這個是要查詢的字串
while charindex('qwer',@a)<>0
begin
select @a=substring ( @a,charindex('qwer',@a)+5,len(@a)-charindex('qwer',@a)-4)
insert into #a values (@a)
endselect substring (ltrim ( string) ,1,charindex(' ',ltrim ( string))) as result from #a
--查詢結果
result
zxcv
yuchor
abcd
sql server 如何擷取一個字串中第2個'-'後面的字元
13樓:司馬刀劍
sql語句可以擷取指定欄位後面的字串,以sqlserver為例,需要用到charindex函式和substring函式。
如test表中有如下資料,要求截圖str欄位中逗號後邊的內容。
可用如下語句:
1select id,substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;
結果截圖:
charindex函式說明:
語法:charindex ( expression1 , expression2 , [ start_location ] )
引數:expression1
一個表示式,其中包含要尋找的字元的次序。expression1 是一個短字元資料型別分類的表示式。
expression2
一個表示式,通常是一個用於搜尋指定序列的列。expression2 屬於字串資料型別分類。
start_location
在 expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。
substring函式說明:
語法:substring( expression, start, length)
引數:expression 字串、二進位制字串、文字、影象、列或包含列的表示式start 整數或可以隱式轉換為 int 的表示式,指定子字串的開始位置length 整數或可以隱式轉換為 int 的表示式,指定子字串的長度
C中擷取字串到指定的陣列
string str 1 1 文字 9002 7225 文字 430 文字 1254 8804 853 文字 8064 853 文字 776 string ss new string 100 其實用陣列儲存不太好,畢竟不知道長度 int ss index 0 string ss c foreach ...
php獲取字串前四位並比對,php獲取字串前四位並比對
php的獲取字串的函式為substr 本函式將字串 string 的第 start 位起的字串取出 length 個字元。若 start 為負數,則從字串尾端算起。若可省略的引數 length 存在,但為負數,則表示取到倒數第 length 個字元。示例 echo substr abcdef 1,3...
java中如何擷取字串中的指定一部分
具體方法如下 string usename f workspace ssh photo webcontent uploadfile 1444783552338pic.jpg int begin usename.indexof int last usename.length system.out.pr...