sql如何獲取字串中的指定字元

2022-01-08 10:59:02 字數 6321 閱讀 7357

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...