sql 截取域名的成績。本站提示廣大學習愛好者:(sql 截取域名的成績)文章只能為提供參考,不一定能成為您想要的結果。以下是sql 截取域名的成績正文
比來因為對數據庫的域名要排重,由於sql直接應用起來便利一些,就整頓下
A.截取從字符串右邊開端N個字符
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select Left(@S1,4)
------------------------------------
顯示成果: http
B.截取從字符串左邊開端N個字符(例如取字符www.jb51.net)
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select right(@S1,11)
------------------------------------
顯示成果: www.jb51.net
C.截取字符串中隨意率性地位及長度(例如取字符www)
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select SUBSTRING(@S1,8,3)
------------------------------------
顯示成果: www.jb51.net
以上例子皆是已知截取地位及長度,上面引見未知地位的例子
2.截取未知地位的函數
A.截取指定字符串後的字符串(例如截取http://前面的字符串)
辦法一:
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
/*此處也能夠如許寫:Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))*/
------------------------------------
顯示成果: www.jb51.net
須要留意:CHARINDEX函數搜刮字符串時,不辨別年夜小寫,是以CHARINDEX('www',@S1)也能夠寫成CHARINDEX('WWW',@S1)
辦法二:(與辦法一相似)
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
--此處也能夠如許寫:Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
------------------------------------
顯示成果: www.jb51.net
函數PATINDEX與CHARINDEX差別在於:前者可以參數一些參數,增長查詢的功效
辦法三:
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select REPLACE(@S1,'http://','')
------------------------------------
顯示成果: www.jb51.net
應用字符調換函數REPLACE,將除須要顯示字符串外的字符調換為空
辦法四:
Declare @S1 varchar(100)
Select @S1='http://www.jb51.net'
Select STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
------------------------------------
顯示成果: www.jb51.net
函數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獲得須要截取的字符串長度
下面的這些辦法能處理根本成績,但當自己數據庫中的域名不是尺度的域名全體(例:http://a.com、http://a.com/a.aspx、http://www.a.com/www/a.aspx)
這個時刻截取的sql就要龐雜點了,終究的症結照樣在於善用 Substring,charindex兩個函數,根本都可以處理