本篇文章還是學習《程序員的SQL金典》內容的記錄,此次將講解的是SQL SERVER的字符串函數。
其實數據庫跟程序語言庫一樣,都會集成很多可以使用的API。這些API,如果你熟悉的話,將減少在 代碼層次的再次加工操作。
我想字符串函數的使用價值還是很高的,所以我覺得一邊學習一起把常用的東西都記錄下來。一來加 深自己的悟性,二來通過歸納使知識為我所用。
SQL SERVER支持的字符串函數(其它數據庫這裡就不羅列了,想看更多的可以關注《程序員的SQL金 典》),本文將介紹如下內容:
LEN(string)函數
LOWER(string)函數
UPPER (string)函數
LTRIM(string)函數
RTRIM (string)函數
SUBSTRING(string,start_position,length)函數
CHARINDEX (string,substring)函數
LEFT (string,length)函數
RIGHT (string,length) 函數
ASCII(string)函數:
ASCII(string)函數:
(1)LEN(string)函數:此函數是用來計算一個字符串的長度,接受一個參數(可以為表裡面的一個 字符串字段,也可以為別的)。這裡面,是沒有區分大小寫(下面的函數都一樣)。LEN,len,還是Len 都等同。例子如下:
SELECT FName, LEN(FName) FROM T_Person
注:如果給LEN函數傳遞的參數是一個時間字段的話,那麼返回的結果就不對,比如一個DateTime。 所以呢,這個函數是用來計算字符串的長度,別的類型參數也能返回結果,但是就不一定正確。
I、如果傳進去的是NULL,那麼返回出來的還是NULL。
II、對於一個字符串形如' a a ',返回的結果是4,而不是5。即計算的結果不包括右側全為空格字符 串部分。
(2)LOWER(string)函數:此函數是用來把一字符串都轉換為小寫字符串。跟LEN()函數一樣,也 接受一個參數。
SELECT FName, LOWER(FName) FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
(3)UPPER (string)函數:與LOWER()函數相反,此函數把字符串都轉換為大寫字符串。也同樣接受 一個參數。
SELECT FName, UPPER(FName) FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
(4)LTRIM(string)函數:此函數是去除字符串左邊的空格(對於夾在字符串裡面的空格則無能為力 )。也同樣接受一個參數。
SELECT FName,LTRIM(FName),LTRIM(' abc ') FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
(5)RTRIM (string)函數:此函數是去除字符串右邊的空格(對於夾在字符串裡面的空格則無能為 力)。也同樣接受一個參數。
SELECT FName,RTRIM(FName),RTRIM(' abc ') FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
如果需要去除兩邊的空格(對於夾在字符串裡面的空格則無能為力),則需要聯合來使用。
SELECT FName,LTRIM(RTRIM(FName)),LTRIM(RTRIM(' abc ')) FROM
T_Person
(6)SUBSTRING(string,start_position,length)函數:此函數是使用來獲取子字符串。其中參數 string為主字符串,start_position為子字符串在主字符串中的起始位置,length
為子字符串的最大 長度。需要注意的是這裡的start_position是從1開始,不同於數組是從0開始。如果給的是0的話,相當 於取了一個''。
SELECT FName, SUBSTRING(FName,2,3) FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
(7)CHARINDEX(substring,string)函數:此函數是計算子字符串在主字符串中位置。其中參數 substring為子字符串,string為主字符串。這個函數可以檢測制定的子字符串是否存在於主字符串中, 如果存在則還可以返回所在的位置。假如有匹配的話,結果大於0。也就是匹配成功的話,至少從1開始 。
SELECT FName,CHARINDEX('m', FName), CHARINDEX('ly', FName)
FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
(8)LEFT (string,length)函數:此函數是實現從左側開始取子字符串,其中參數string為主字符 串,length為子字符串的最大長度。即取出來的結果是1至length范圍內的子字符串。
SELECT FName, LEFT(FName,3) , LEFT(FName,2)
FROM T_Person
注:如果傳進去的是NULL,那麼返回出來的還是NULL。
這種方式等同於使用SUBSTRING(string,start_position,length)函數:
SELECT FName,SUBSTRING(FName, 1,3) FROM T_Person