SQL擷取字串

2021-08-29 17:18:27 字數 3484 閱讀 7986

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不支援。

函式功效:

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

應用範圍:

標題、內容擷取

函式格式:

string substr ( 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)

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

顯示結果: http

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.擷取指定字串後的字串(例如擷取http://後面的字串)

方法一:

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)

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 是字串 二...