sqlserver字符串處理函數


sqlserver提供了一系列字符串處理函數:substring、left、right、len、charindex、patindex、replace、replicate、stuff、upper、lower、rtrim、ltrim等函數。

  • substring函數用於從字符串中提取子串,從指定位置開始(start),具有特定長度(length)的子字符串。

    substring(string,strat,length)

    eg:  select  substring('abcde',1,3)返回子字符串'abc'

                      select  substring('abcde',1,8)返回字符串'abcde'(如果length長度大於字符串長度,則返回原字符串)

  • leftright函數返回輸入字符串從左或右開始的n個字符

    left(sting,n)            /              right(string,n)

    eg:  select  left('abcde',3)返回字符串'abc'

                      select  right('abcde',3)返回字符串'cde'

  • lendatalength函數分別返回字符串中的字符數以及字符串中的字節數

    len(string)            /                datalength(string)

    eg:  select  len('and')返回字符數3

           select  datalength(N'abc')返回字節數6

           select len('  abc   ')返回5,無論有多少個連續空格,均計算一次

  注:普通字符,字符串的字符數和字節數是一致的,這是因為一個字符只占一個字節的存儲空間

              Unicode字符,字符串的字符數和字節數是不一致的,一個字符占用兩個字節的空間,故字符數是字節數的一半  

 

  • charindex函數返回字符串中某個子串首次出現的起始位置

    charindex(substring,string[,start_pos]),可以選擇性的指定搜索的起始位置,即對start_pos賦值,未對其賦值則從第一個字符開始搜索

    eg:  select  charindex('m','abnmdemf',5)返回7
           select  charindex('m','abnmdemfcv',8)返回0
           select  charindex('m','abnmdemf',3)返回4

    默認情況下,sqlserver對大小寫是不敏感的,但是當設置了對大小寫敏感COLLATE Latin1_General_CS_AS時(patindex函數同樣適用):

    eg:  select  charindex'test', 'this Test is Test' COLLATE Latin1_General_CS_AS)返回0

           select  charindex'test', 'this Test is Test' COLLATE Latin1_General_CI_AS)返回6

  • patindex函數返回某個模式第一次出現的起始位置

    patindex(pattern,string)

    eg:  select patindex('%[0-9]%','abcd123efgh')返回5,查詢數字0-9中任一數字在字符串'abcd123efgh'首次出現的位置,%表示數字前可以匹配任意長度的字符,包括空字符

  • replace函數將字符串中出現的所有某個子串替換為另一個字符串

    replace(string,substring1,substring2)將substring1替換為substring2

    eg:  select replace( 'l-a 2-b',  '-',  ':')返回結果為'1:a 2:b'

  • replicate函數指定的次數復制字符串

    replicate(string,n)

    eg:  select  replicate('abc',3)返回'abcabcabc'

  • stuff函數先刪除字符串中的一個子串,再插入一個新的子串作為替換

    stuff(string,pos,delete_length,insertstring)

    eg:  select  stuff('xyz',2,1,'abc')返回'xabcz'

  • upperlower函數將字符串轉換為大寫或小寫

    upper(string)          /         lower(string)

  • rtrimltrim函數刪除字符串中的尾隨空格或前導空格

    rtrim(string)           /          ltrim(string)

    eg:  select  rtrim(ltrim('  abc   '))

 

 

      

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM