sql 擷取網域名稱的方法

2022-02-13 19:11:27 字數 2321 閱讀 5835

最近由於對資料庫的網域名稱要排重,因為sql直接使用起來方便一些,就整理下

a.擷取從字串左邊開始n個字元

declare @s1 varchar(100)

select @s1=''

select left(@s1,4)

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

顯示結果: http

b.擷取從字串右邊開始n個字元(例如取字元www.cnblogs.com)

declare @s1 varchar(100)

select @s1=''

select right(@s1,11)  

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

顯示結果: www.cnblogs.com

c.擷取字串中任意位置及長度(例如取字元www)

declare @s1 varchar(100)

select @s1=''

select substring(@s1,8,3)  

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

顯示結果: www.cnblogs.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.cnblogs.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.cnblogs.com  

函式patindex與charindex區別在於:前者可以引數一些引數,增加查詢的功能

方法三:

顯示結果: www.cnblogs.com

利用字元替換函式replace,將除需要顯示字串外的字元替換為空

方法四:

顯示結果: www.cnblogs.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,charindex兩個函式,基本都可以解決

SQL 字元擷取

如題所示 在寫儲存過程當中常用到字元的擷取與同事總結了一下帖上來 code declare text nvarchar 20 sign nvarchar 20 content nvarchar 20 startindex int,findindex int,result nvarchar 30 初始...

SQL 擷取的另一種方法

有時候我們需要將如下結果集中的ids進行分割 ids 1,12,123 1 行受影響 希望得到這樣的結果 112 123 3 行受影響 之前一直用表值函式來擷取,這裡借助master.dbo.spt values表來實現 準備資料 if object id tempdb.a is notnull d...

sql語句拼接,字元擷取,sql排序

1 下面的語句會把,從t in 1表查詢的vinleft欄位進行去重,同理t vin 3 做同樣的處理,並且把兩個查詢的結果連在一起 select distinct vinleft from t vin 0 union select distinct vinleft from t vin 1 uni...