sqlserver字串處理函式

2022-07-20 21:09:14 字數 1944 閱讀 5144

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

substring(string,strat,length)

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

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

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

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

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

len(string)            /                datalength(string)

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

select  datalength(n'abc')返回位元組數6

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

注:普通字元,字串的字元數和位元組數是一致的,這是因為乙個字元只佔乙個位元組的儲存空間

unicode字元,字串的字元數和位元組數是不一致的,乙個字元占用兩個位元組的空間,故字元數是位元組數的一半  

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(pattern,string)

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

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

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

replicate(string,n)

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

stuff(string,pos,delete_length,insertstring)

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

upper(string)          /         lower(string)

rtrim(string)           /          ltrim(string)

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

SQL SERVER字串處理

1 將字串按分隔符擷取為類陣列。實現方式 根據分割符,找到分隔符在主串中的位置,然後根據位置,擷取主串前面的部分,存入表,將後面的部分賦值給主串,如此迴圈往復,直至結束。create function split string varchar 255 待分割字串 separator varchar ...

SQL Server 字串處理

declare str varchar 50 set str ap fqc 2014072300004 獲取指定字元第一次出現的位置 select patindex str 返回 3 獲取指定字元第一次出現的位置之前的字串 select substring str,1,charindex str 1...

sql server 字串處理

判斷字串是否包含指定字串 charindex 22 11233 0執行字串sql語句 不帶引數的 declare sql nvarchar max set sql select from 表名 exec sp executesql sql 帶引數的 declare sql nvarchar max ...