SQL SERVER字串函式

2022-02-15 20:33:12 字數 4781 閱讀 5007

本篇文章還是學習《程式設計師的sql金典》內容的記錄,此次將講解的是sql server的字串函式。

其實資料庫跟程式語言庫一樣,都會整合很多可以使用的api。這些api,如果你熟悉的話,將減少在**層次的再次加工操作。

我想字串函式的使用價值還是很高的,所以我覺得一邊學習一起把常用的東西都記錄下來。一來加深自己的悟性,二來通過歸納使知識為我所用。

len(string)函式

此函式是用來計算乙個字串的長度,接受乙個引數(可以為表裡面的乙個字串字段,也可以為別的)。這裡面,是沒有區分大小寫(下面的函式都一樣)。len,len,還是len都等同。例子如下:

select fname, len(fname) from t_person

注:如果給len函式傳遞的引數是乙個時間字段的話,那麼返回的結果就不對,比如乙個datetime。所以呢,這個函式是用來計算字串的長度,別的型別引數也能返回結果,但是就不一定正確。

i、如果傳進去的是null,那麼返回出來的還是null。

ii、對於乙個字串形如' a a ',返回的結果是4,而不是5。即計算的結果不包括右側全為空格字串部分。

lower(string)函式

此函式是用來把一字串都轉換為小寫字串。跟len()函式一樣,也接受乙個引數。

select fname, lower(fname) from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

upper (string)函式

與lower()函式相反,此函式把字串都轉換為大寫字串。也同樣接受乙個引數。

select fname, upper(fname) from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

ltrim(string)函式

此函式是去除字串左邊的空格(對於夾在字串裡面的空格則無能為力)。也同樣接受乙個引數。

select fname,ltrim(fname),ltrim('

abc

') from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

rtrim (string)函式

此函式是去除字串右邊的空格(對於夾在字串裡面的空格則無能為力)。也同樣接受乙個引數。

select fname,rtrim(fname),rtrim('

abc

') from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

如果需要去除兩邊的空格(對於夾在字串裡面的空格則無能為力),則需要聯合來使用。

select fname,ltrim(rtrim(fname)),ltrim(rtrim('

abc

')) from

t_person

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。

charindex(substring,string)函式

此函式是計算子字串在主字串中位置。其中引數substring為子字串,string為主字串。這個函式可以檢測制定的子字串是否存在於主字串中,如果存在則還可以返回所在的位置。假如有匹配的話,結果大於0。也就是匹配成功的話,至少從1開始。

select fname,charindex('

m', fname), charindex('ly'

, fname)

from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

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

right(string,length)函式

此函式是實現從右側開始取子字串,其中引數string為主字串,length為子字串的最大長度。即取出來的結果是1至length範圍內的子字串。

select fname, right(fname,3) , right(fname,2

)from t_person

注:如果傳進去的是null,那麼返回出來的還是null。

這種方式等同於使用substring(string,start_position,length)函式,其中substring(string, len(string)- length+1, length)等價於right (string,length)。

select fname, substring(fname,len(fname)-

2,3) , substring(fname,len(fname)-

1,2)

from t_person

replace(string,string_tobe_replace,string_to_replace)函式

此函式是實現字串的替換功能,其中引數string 為要進行替換操作的主字串,引數string_tobe_replace 為要被替換的字串,即string_to_replace將替換string_tobe_replace所有出現的地方。 

select fname,replace(fname,'

i','e'

),fidnumber,

replace(fidnumber,'

2345

','abcd

') from t_person

借助替換為''來實現刪除字串的功能:

select fname, replace(fname,'

m',''

) ,fidnumber,

replace(fidnumber,'

123','') from t_person

前面介紹過ltrim(string)函式和rtrim(string)函式,兩者最終只能刪除兩側的空格,而對於在字串裡面的空格,則無能為力。而借助於replace函式則可以輕鬆解決。

select

replace('

abc 123 wpf

','','') , replace('

ccw enet wcf f

','','')

ascii(string)函式

此函式用來得到乙個字元的ascii 碼,它有且只有乙個引數,這個引數為待求ascii碼的字元,如果引數為乙個字串則函式返回第乙個字元的ascii碼。

select

ascii('

a') , ascii('

abc')

注:如果傳進去的是null或者是'',那麼返回出來的是null。

char(string)函式

char(string)函式:ascii(string)函式相反,此函式用來得到乙個字元的ascii 碼。

select

char(56) , char(90) ,'

a', char( ascii('

a') )

注:如果傳進去的是null,那麼返回出來的是null。

difference(string)函式

此函式用來比較兩個字串的發音相似度,它可以計算兩個字串的發音特徵值,並且比較它們,然後返回乙個0至4 之間的乙個值來反映兩個字串的發音相似度,這個值越大則表示兩個字串發音相似度越大。

select

difference(fname,'

merry

') from t_person

注:如果傳進去的是null,那麼返回出來的是null。

sqlserver 字串分割函式

create function split charstring nvarchar 4000 字串 separator char 1 分割符 returns tb temp table string nvarchar 4000 asbegin declare beginindex int,separ...

SQL Server 字串處理函式

函式 charindex expressiontofind expressiontosearch start location 功能 在乙個字串中搜尋指定的字元,返回發現指定的字元的位置 select charindex a abcdef 1 返回1 select charindex f abcde...

Sql Server系列 字串函式

字串函式用於對字元和二進位制字串進行各種操作,大多數字串函式只能作用於char nchar varchar和nvarchar資料型別。字串函式可以用在select或者where語句中。1.ascii 函式 ascii character expression 函式作用於返回字串表示式中最左側字元的a...