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

