sql 截取域名的問題
最近由于對數(shù)據(jù)庫的域名要排重,因為sql直接使用起來方便一些,就整理下
A.截取從字符串左邊開始N個字符
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select Left(@S1,4)
------------------------------------
顯示結(jié)果: http
B.截取從字符串右邊開始N個字符(例如取字符www.dhdzp.com)
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select right(@S1,11)
------------------------------------
顯示結(jié)果: www.dhdzp.com
C.截取字符串中任意位置及長度(例如取字符www)
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select SUBSTRING(@S1,8,3)
------------------------------------
顯示結(jié)果: www.dhdzp.com
以上例子皆是已知截取位置及長度,下面介紹未知位置的例子
2.截取未知位置的函數(shù)
A.截取指定字符串后的字符串(例如截取http://后面的字符串)
方法一:
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select Substring(@S1,CHARINDEX('www',@S1)+1,Len(@S1))
/*此處也可以這樣寫:Select Substring(@S1,CHARINDEX('//',@S1)+2,Len(@S1))*/
------------------------------------
顯示結(jié)果: www.dhdzp.com
需要注意:CHARINDEX函數(shù)搜索字符串時,不區(qū)分大小寫,因此CHARINDEX('www',@S1)也可以寫成CHARINDEX('WWW',@S1)
方法二:(與方法一類似)
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select Substring(@S1,PATINDEX('%www%',@S1)+1,Len(@S1))
--此處也可以這樣寫:Select Substring(@S1,PATINDEX('%//%',@S1)+2,Len(@S1))
------------------------------------
顯示結(jié)果: www.dhdzp.com
函數(shù)PATINDEX與CHARINDEX區(qū)別在于:前者可以參數(shù)一些參數(shù),增加查詢的功能
方法三:
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select REPLACE(@S1,'http://','')
------------------------------------
顯示結(jié)果: www.dhdzp.com
利用字符替換函數(shù)REPLACE,將除需要顯示字符串外的字符替換為空
方法四:
Declare @S1 varchar(100)
Select @S1='http://www.dhdzp.com'
Select STUFF(@S1,CHARINDEX('http://',@S1),Len('http://'),'')
------------------------------------
顯示結(jié)果: www.dhdzp.com
函數(shù)STUFF與REPLACE區(qū)別在于:前者可以指定替換范圍,而后者則是全部范圍內(nèi)替換
B.截取指定字符后的字符串(例如截取C:\Windows\test.txt中文件名)
與A不同的是,當(dāng)搜索對象不是一個時,利用上面的方法只能搜索到第一個位置
方法一:
Declare @S1 varchar(100)
Select @S1='C:\Windows\test.txt'
select right(@S1,charindex('\',REVERSE(@S1))-1)
-------------------------------------
顯示結(jié)果: text.txt
利用函數(shù)REVERSE獲取需要截取的字符串長度
上面的這些方法能解決基本問題,但當(dāng)本身數(shù)據(jù)庫中的域名不是標(biāo)準(zhǔn)的域名整體(例:http://a.com、http://a.com/a.aspx、http://www.a.com/www/a.aspx)
這個時候截取的sql就要復(fù)雜點了,最終的關(guān)鍵還是在于善用 Substring,charindex兩個函數(shù),基本都可以解決
相關(guān)文章
SQL?server修改表錯誤提示:阻止保存需要重新創(chuàng)建表的更改解決辦法
這篇文章主要給大家介紹了關(guān)于SQL?server修改表錯誤提示:阻止保存需要重新創(chuàng)建表的更改的解決辦法,文中將解決的辦法介紹的非常詳細,對同樣遇到的朋友具有一定的參考解決價值,需要的朋友可以參考下2024-06-06
SQL語句實現(xiàn)查詢SQL Server內(nèi)存使用狀況
這篇文章主要介紹了SQL語句實現(xiàn)查詢SQL Server內(nèi)存使用狀況,本文直接給出實現(xiàn)代碼,需要的朋友可以參考下2015-07-07
sqlserver 數(shù)據(jù)庫連接字符串中的可選項收集
sqlserver 數(shù)據(jù)庫連接字符串中的可選項收集,需要的朋友可以參考下。2011-10-10
SQL Server將一列的多行內(nèi)容拼接成一行的實現(xiàn)方法
這篇文章主要介紹了SQL Server將一列的多行內(nèi)容拼接成一行的實現(xiàn)方法,需要的朋友可以參考下2015-11-11
SQL Server 數(shù)據(jù)庫備份和還原認識和總結(jié) (一)
可能許多同學(xué)對SQL Server的備份和還原有一些了解,也可能經(jīng)常使用備份和還原功能,我相信除DBA之外我們大部分開發(fā)員隊伍對備份和還原只使用最基礎(chǔ)的功能,對它也只有一個大概的認識,如果對它有更深入的認識,了解它更全面的功能豈不是更好,到用時會得心應(yīng)手2012-08-08
安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法
這篇文章主要介紹了安裝sql server2008后再安裝sql 2005找不到本地服務(wù)器的解決方法,需要的朋友可以參考下2015-01-01

