sql語句如何擷取欄位中固定位置的值

2022-01-12 07:02:18 字數 5873 閱讀 2899

1樓:小鏡子

sql語句如何擷取欄位中固定位置的值有兩種方法:

第一種:用到的函式:substring(' ', , )、charindex(' ',' ')

從字串『abc123』的第一個字元開始擷取,共擷取兩個字元,最後得到『ab』。

select substring('[email protected]',1,charindex('@','[email protected]')-1)

第二種:elect id, substring(str,charindex(',',str)+1,len(str)-charindex(',',str)) from test;

如果中間間隔為-,則sql語句為select id, substring(str,charindex('-',str)+1,len(str)-charindex('-',str)) from test。

select substring('[email protected]',1,charindex('@','[email protected]')-1)的意思:

substring(字串表示式,開始位置,長度):

從一個指定字串的指定位置擷取制定長度的字元;

第一個參數列示被擷取的字串;

第二個參數列示要在第一個引數中開始擷取的位置;

第三個參數列示要擷取的長度。

例如:select substring('abc123',1,2) →返回ab

從字串『abc123』的第一個字元開始擷取,共擷取兩個字元,最後得到『ab』。

2樓:匿名使用者

一、用到的函式:substring(' ', , )、charindex(' ',' ')

select substring('[email protected]',1,charindex('@','[email protected]')-1)

1.substring(字串表示式,開始位置,長度):

從一個指定字串的指定位置擷取制定長度的字元;

第一個參數列示被擷取的字串;

第二個參數列示要在第一個引數中開始擷取的位置;

第三個參數列示要擷取的長度。

例如:select substring('abc123',1,2) →返回ab

從字串『abc123』的第一個字元開始擷取,共擷取兩個字元,最後得到『ab』。

2.charindex(字串表示式1,字串表示式2[,整數表示式]):

在字串2中查詢字串1,如果存在返回第一個匹配的位置,如果不存在返回0。如果字串1和字串2中有一個是null則返回null。

可以指定在字串2中查詢的起始位置。

例如:select charindex('ab','bcabtabd') → 返回3

select charindex('ab','bcabtabd',4) →返回6

二、用到的函式:left(' ', )、charindex(' ',' ')

select left('[email protected]',charindex('@','[email protected]')-1)

1.left(字串表示式,整數表示式):

從字串表示式的最左邊開始擷取整數表示式個字元。

例如:select left('abcdef',3) →返回abc

sql語句,能夠擷取指定欄位後面的一個字串嗎?

3樓:東方小廚師

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 的表示式,指定子字串的長度

4樓:匿名使用者

--這個查詢需要注意的是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

5樓:匿名使用者

能實現的,這個又不難,你用什麼資料庫的,每個資料庫的sql語法是不一樣的,函式也是不一樣的

6樓:匿名使用者

如果 是 「asdf qwer qwer qwer qwer zxcv 1234 的模式的話:

select trim(substring_index(substring_index(「asdf qwer zxcv 1234","qwer",-1)," ",2))

7樓:匿名使用者

charindex

返回字串中指定表示式的起始位置。

語法 charindex ( expression1 , expression2 [ , start_location ] )

引數 expression1

一個表示式,其中包含要尋找的字元的次序。expression1 是一個短字元資料型別分類的表示式。

expression2

一個表示式,通常是一個用於搜尋指定序列的列。expression2 屬於字串資料型別分類。

start_location

在 expression2 中搜尋 expression1 時的起始字元位置。如果沒有給定 start_location,而是一個負數或零,則將從 expression2 的起始位置開始搜尋。

例如:select charindex( 'you ', 'i love you ')

你利用一下就能實現。至於多個可以迴圈擷取字串。

sql 如何擷取一個欄位裡某一字串中間的字元?

8樓:魅

--這個查詢需要注意的是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語句,如何擷取指定欄位某一個字元出現後的後面的字串嗎

9樓:教育仁昌

工具/材料:management studio。

1、首先在桌面上,點選「management studio」圖示。

2、之後在該介面中,點選左上角「新建查詢」選項。

3、接著在該介面中,輸入擷取指定欄位某一個字元出現後的後面的字串的sql語句「

select substring(name,charindex(',',name)+1,len(name)-charindex(',',name)) from test2;」。

4、然後在該介面中,點選左上方「執行」按鈕。

5、最後在該介面中,顯示擷取指定欄位某一個字元出現後的後面的字串成功。

10樓:司馬刀劍

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語句修改欄位長度,sql語句如何修改欄位長度

oracle下這麼執行 alter table member modify phone char 15 sqlserver下這麼執行 alter table member alter column phone char 15 你到底用什麼庫 sql server修改表的欄位長度的語法規則及示例如下 ...

sql更新語句若某欄位為空則更新此欄位否則不更新

mysql的寫法,其他資料庫同理,只有當前時間的引數不同 update test set endtime now where endtime is null update test set stoptime getdate where select count from testwhere id s...

acces中的sql語句中as為欄位起別名時欄位間有空格用單

雙引號,沒有特殊字元 如空格等 可以不加 select 姓名 as 姓 名 from infor sql資料庫 as後面的別名需要加雙引號嗎?和不加有什麼區別?求解 不用加引號。如果別名是保留字或者別名中含有會引起歧義的特殊字元 如空格 時,就要用方括號 不是引號 括起來。不用加的,除非你as後面的...