sql 擷取字串

2021-05-27 16:23:37 字數 2160 閱讀 2912

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=''

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獲取需要擷取的字串長度

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

SQL擷取字串

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