SQL擷取字串

2021-06-20 08:25:23 字數 4699 閱讀 4778

substring 

返回字元、

binary

、text      

或image      

表示式的一部分。有關可與該函式一起使用的有效

microsoft®      sql      server™      

資料型別的更多資訊,請參見資料型別。

語法substring      (      expression      ,      start      ,      length      )   

引數expression 

是字串、二進位制字串、

text

、image

、列或包含列的表示式。不要使用包含聚合函式的表示式。

start 

是乙個整數,指定子串的開始位置。

length 

是乙個整數,指定子串的長度(要返回的字元數或位元組數)。

substring() 

——任意位置取子串

left() 

right() 

——左右兩端取子串

ltrim() 

rtrim() 

——截斷空格,沒有

trim()

。charindex() 

patindex() 

——查子串在母串中的位置,沒有返回

0。區別:

patindex

支援萬用字元,

charindex

不支援。

函式功效:

字串擷取函式,只限單位元組字元使用(對於中文的擷取時遇上奇數長度是會出現亂碼,需另行處理),本函式可擷取字串指定範圍內的字元。

應用範圍:

標題、內容擷取

函式格式:

stringsubstr( string string, int start [, int length])引數1

:處理字串引數2

:擷取的起始位置(第乙個字元是從

0開始)引數3

:擷取的字元數量

substr()

更多介紹可在

php官方手冊中查詢(字串處理函式庫)

舉例:

substr("abcdefg", 0);     //

返回:abcdefg

,擷取所有字元

substr("abcdefg", 2);     //

返回:cdefg

,擷取從

c開始之後所有字元

substr("abcdefg", 0, 3); //

返回:abc

,擷取從a開始

3個字元

substr("abcdefg", 0, 100); //

返回:abcdefg

,100

雖然超出預處理的字串最長度,但不會影響返回結果,系統按預處理字串最大數量返回。

substr("abcdefg", 0, -3); //

返回:efg

,注意引數

-3,為負值時表示從尾部開始算起,字串排列位置不變 例子

: 1.

擷取已知長度的函式

a.

擷取從字串左邊開始

n個字元

declare @s1 varchar(100)

select @s1=''

select left(@s1,4)

------------------------------------

顯示結果

b.擷取從字串右邊開始

n個字元

(例如取字元

www.163.com)

declare @s1 varchar(100)

select @s1=''

select right(@s1,11)  

------------------------------------

顯示結果

: www.163.com

c.擷取字串中任意位置及長度

(例如取字元

www)

declare @s1 varchar(100)

select @s1=''

select substring(@s1,8,3)  

------------------------------------

顯示結果

: www.163.com

以上例子皆是已知擷取位置及長度

,下面介紹未知位置的例子

2.

擷取未知位置的函式

a.擷取指定字串後的字串

(例如擷取

後面的字串)

方法一:

declare @s1 varchar(100)

select @s1=''  

select substring(@s1,charindex('www',@s1)+1,len(@s1))

/*此處也可以這樣寫

:select substring(@s1,charindex('//',@s1)+2,len(@s1))*/

------------------------------------

顯示結果

: www.163.com

需要注意

:charindex

函式搜尋字串時

,不區分大小寫,因此

charindex('www',@s1)

也可以寫成

charindex('www',@s1)

方法二:(與方法一類似)

declare @s1 varchar(100)

select @s1=''  

select substring(@s1,patindex('%www%',@s1)+1,len(@s1))

--此處也可以這樣寫

:select substring(@s1,patindex('%//%',@s1)+2,len(@s1))

------------------------------------

顯示結果

: www.163.com

函式patindex

與charindex

區別在於

:前者可以引數一些引數

,增加查詢的功能

方法三:

顯示結果

: www.163.com

利用字元替換函式

replace,

將除需要顯示字串外的字元替換為空

方法四:

顯示結果

: www.163.com

函式stuff

與replace

區別在於

:前者可以指定替換範圍

,而後者則是全部範圍內替換 b.

擷取指定字元後的字串

(例如擷取

c:\windows\test.txt

中檔名)與

a不同的是

,當搜尋物件不是乙個時

,利用上面的方法只能搜尋到第乙個位置

方法一:

declare @s1 varchar(100)

select @s1='c:\windows\test.txt'

select right(@s1,charindex('\',reverse(@s1))-1)

-------------------------------------

顯示結果

: text.txt

利用函式

reverse

獲取需要擷取的字串長度

substr() 例子

: private void ddl_areabind()

protected void ddl_area_selectedindexchanged(object sender, eventargs e)

查詢祖先節點

select * from 

目錄表_

資料庫where id<>-1 and datatype<>1 and datatype<>2 connect by prior fatherid=id start with id=28 order by 

目錄級別

,id

查詢子孫節點:

select * from 

目錄表_

資料庫where id<>-1 and datatype<>1 and datatype<>2 connect by prior id=fatherid start with id=28 order by 

目錄級別

,id

sql 擷取字串

sql 擷取字串 a.擷取從字串左邊開始n個字元 declare s1 varchar 100 select s1 select left s1,4 顯示結果 http b.擷取從字串右邊開始n個字元 例如取字元www.163.com declare s1 varchar 100 select s1...

SQL擷取字串

substring 返回字元 binary text 或 image 抒發式的一全體。無關可與當函式一伏運用的無效 microsoft sql server 資料種型的更多疑息,請參睹資料種型。語法 substring expression start length 引數 expression 是字...

SQL擷取字串

substring 返回字元 binary text 或 image 表示式的一部分。有關可與該函式一起使用的有效 microsoft sql server 資料型別的更多資訊,請參見資料型別。語法 substring expression start length 引數 expression 是字...