程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> 其他數據庫知識 >> MSSQL >> sql 截取域名的成績

sql 截取域名的成績

編輯:MSSQL

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兩個函數,根本都可以處理

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved