字串操作函式
1.拼接字串
拼接字串可以通過 + 來實現拼接,使用這個方法存在一個缺點,當需要拼接的字串為NULL時,由於T-SQL中定義NULL + NULL 仍然為 NULL,所以導致拼接結果出錯。當然也可以在拼接字串的時候使用
ISNULL
方法提供預設值。
SELECT firstname + ` `+ lastname FROM dbo.A --假設輸出 "Name 非白即黑"
#當lastname 為 NULL時
SELECT firstname + ` `+ ISNULL(lastname,``) FROM dbo.A --輸出 "Name "
使用
CONCAT
函式,他可以接受要拼接的字串,當字串中存在NULL時,會自動將NULL替換為空字串。
SELECT CONCAT(`Name:` ,NULL , N`非白即黑`) --輸出 `Name:非白即黑`
2.計算字串的長度和所佔的位元組數
使用
LEN
函式計算字串的長度,不計算字串末位的空格數量
SELECT LEN(`AABBCCDD `) --輸出 `8`
使用
DATALENGTH
函式計算字串所佔的位元組數,末位空格也算。
SELECT DATALENGTH(`AABBCCDD `) --輸出 `9`
SELECT DATALENGTH(`你好 `) --輸出 `5`
SELECT DATALENGTH(N`你好A `) --輸出 `8`
3.替換字串中的指定字元
REPLACE
函式可以實現對字串中指定的字元進行替換
SELECT REPLACE(N`非白即黑`,N`非白`,N`Name:非白`) --輸出 `Name:非白即黑`
此方法可以計算某一個字元或者是字串在目標字串中出現的次數
SELECT LEN(`AABBCCDD`) - LEN(REPLACE(`AABBCCDD`,`A`,``)) --輸出 `2`
4.型別轉換
CAST
函式實現對字串的型別轉換。
SELECT CAST(`123` AS INT) --輸出 `123`,當型別轉化失敗的時候,丟擲異常.
5.計算字串在目標字串中的位置
CHARINDEX
函式實現計算字串第一次出現的位置
SELECT CHARINDEX(`,NAME1,`,`,NAME1,AGE1,SEX1,`) --輸出`1`,當結果為0的時表示所要查詢的字串不在目標字串當中。
此函式可以用於實現批量刪除
DELETE FROM dbo.A WHERE CHARINDEX(`,`+CAST(id as varchar(10))+`,`,@idstr) > 0
--其中@idstr為`,1,2,3,4,5,6,7,`....
6.擷取子字串
SUBSTRING
函式可以從一個字串中擷取一個子字串。
SELECT SUBSTRING(`ABCDEFG`,1,5) --輸出 ’ABCDE’
#位置從1開始,擷取長度為5,如果所擷取的數量超出了輸入字串的末尾,不會引發錯誤,會直接擷取到末尾
SELECT SUBSTRING(`ABCDEFG`,1,100) --輸出 ‘ABCDEFG’
7.從字串兩側返回指定數量的字串,類似於SUBSTRING
的快捷方式
LEFT
函式返回字串左側指定數量的字串
SELECT LEFT(`ABCDEFG`,3) --輸出‘ABC’
RIGHT
函式返回字串右側指定數量的字串
SELECT RIGHT(`ABCDEFG`,3) --輸出‘EFG’
8.查詢符合某個模式的字串在目標字串中的位置
PATINDEX
函式返回模式在字串中第一次出現的位置。
SELECT PATINDEX(`%[A-E]%`,`123ABC456`) --輸出‘4’
#第一個引數模式,類似於正則表達,但是在T-SQL中還是和正規表示式有區別的,總之大同小異。
9.按照指定次數重複一個字串
REPLICATE
函式可以按照指定的次數重複一個字串
SELECT REPLICATE(`ABC`,3) --輸出‘ABCABCABC’
10.從目標字串中移除指定字串,並插入一個替代的新子字串。
STUFF
函式可以移除字串並插入新的字串代替
SELECT STUFF(`ABCDEFG`,2,3,`HI`) --輸出 ‘AHIEFG’
#若想在某個字元之後插入新的字元,可以設定移除0個字元
SELECT STUFF(`ABCDEFG`,2,0,`HIJ`) --輸出 ‘AHIJBCDEFG’
#在指定位置之前開始算移除的個數,所以是在第一個字元之後插入的。
11.轉換大小寫
UPPER
函式轉化字串為大寫
SELECT UPPER(`abcdeFG`) --輸出‘ABCDEFG’
LOWER
函式轉化字串為小寫
SELECT LOWER(`abcdeFG`) --輸出‘abcdefg’
12.去掉字串兩側的空格
LTRIM
函式去掉字串左側的空格
SELECT LTRIM(` ABCDEFG`) --輸出‘ABCDEFG’
RTRIM
函式去掉字串右側的空格
SELECT RTRIM(`ABCDEFG `) --輸出‘ABCDEFG’
要想去掉兩側的空格
SELECT LTRIM(RTRIM(` ABCDEFG `)) --輸出 ‘ABCDEFG’
13.模糊匹配
LIKE
謂詞可以實現模糊匹配,模糊匹配的規則如下(類似於正規表示式):1)
%
匹配任意多個字元。
2)_
匹配一個字元
3)[<charset>]
匹配字符集合中的一個
4)[<char1>-<char2>]
匹配字元char1到char2之間的字元
5)[^<char>]
3) 4)條規則的取反
6)ESCAPE
使用轉義符號當作萬用字元號(例:`%!_%`ESCAPE`!`)。也可以使用[]包起來(例:`[_]`匹配下劃線)