sql字符串函數(shù)大全和使用方法示例
SQL SERVER支持的字符串函數(shù)內(nèi)容:
LEN(string)函數(shù)
LOWER(string)函數(shù)
UPPER (string)函數(shù)
LTRIM(string)函數(shù)
RTRIM (string)函數(shù)
SUBSTRING(string,start_position,length)函數(shù)
CHARINDEX(string,substring)函數(shù)
LEFT (string,length)函數(shù)
RIGHT (string,length) 函數(shù)
ASCII(string)函數(shù)
ASCII(string)函數(shù)
(1)LEN(string)函數(shù):此函數(shù)是用來計算一個字符串的長度,接受一個參數(shù)(可以為表里面的一個字符串字段,也可以為別的)。這里面,是沒有區(qū)分大小寫(下面的函數(shù)都一樣)。LEN,len,還是Len都等同。例子如下:
SELECT FName, LEN(FName) FROM T_Person
注:如果給LEN函數(shù)傳遞的參數(shù)是一個時間字段的話,那么返回的結果就不對,比如一個DateTime。所以呢,這個函數(shù)是用來計算字符串的長度,別的類型參數(shù)也能返回結果,但是就不一定正確。
I、如果傳進去的是NULL,那么返回出來的還是NULL。
II、對于一個字符串形如' a a ',返回的結果是4,而不是5。即計算的結果不包括右側全為空格字符串部分。
(2)LOWER(string)函數(shù):此函數(shù)是用來把一字符串都轉換為小寫字符串。跟LEN()函數(shù)一樣,也接受一個參數(shù)。
SELECT FName, LOWER(FName) FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
(3)UPPER (string)函數(shù):與LOWER()函數(shù)相反,此函數(shù)把字符串都轉換為大寫字符串。也同樣接受一個參數(shù)。
SELECT FName, UPPER(FName) FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
(4)LTRIM(string)函數(shù):此函數(shù)是去除字符串左邊的空格(對于夾在字符串里面的空格則無能為力)。也同樣接受一個參數(shù)。
SELECT FName,LTRIM(FName),LTRIM(' abc ') FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
(5)RTRIM (string)函數(shù):此函數(shù)是去除字符串右邊的空格(對于夾在字符串里面的空格則無能為力)。也同樣接受一個參數(shù)。
SELECT FName,RTRIM(FName),RTRIM(' abc ') FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
如果需要去除兩邊的空格(對于夾在字符串里面的空格則無能為力),則需要聯(lián)合來使用。
SELECT FName,LTRIM(RTRIM(FName)),LTRIM(RTRIM(' abc ')) FROM
T_Person
(6)SUBSTRING(string,start_position,length)函數(shù):此函數(shù)是使用來獲取子字符串。其中參數(shù)string為主字符串,start_position為子字符串在主字符串中的起始位置,length
為子字符串的最大長度。需要注意的是這里的start_position是從1開始,不同于數(shù)組是從0開始。如果給的是0的話,相當于取了一個''。
SELECT FName, SUBSTRING(FName,2,3) FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
(7)CHARINDEX(substring,string)函數(shù):此函數(shù)是計算子字符串在主字符串中位置。其中參數(shù)substring為子字符串,string為主字符串。這個函數(shù)可以檢測制定的子字符串是否存在于主字符串中,如果存在則還可以返回所在的位置。假如有匹配的話,結果大于0。也就是匹配成功的話,至少從1開始。
SELECT FName,CHARINDEX('m', FName), CHARINDEX('ly', FName)
FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
(8)LEFT (string,length)函數(shù):此函數(shù)是實現(xiàn)從左側開始取子字符串,其中參數(shù)string為主字符串,length為子字符串的最大長度。即取出來的結果是1至length范圍內(nèi)的子字符串。
SELECT FName, LEFT(FName,3) , LEFT(FName,2)
FROM T_Person
注:如果傳進去的是NULL,那么返回出來的還是NULL。
這種方式等同于使用SUBSTRING(string,start_position,length)函數(shù):
SELECT FName,SUBSTRING(FName, 1,3) FROM T_Person
(9)RIGHT (string,length) 函數(shù):此函數(shù)是實現(xiàn)從右側開始取子字符串,其中參數(shù)string為主字符串,length為子字符串的最大長度。即取出來的結果是1至length范圍內(nèi)的子字符串。
SELECT FName, RIGHT(FName,3) , RIGHT(FName,2)
F
注:如果傳進去的是NULL,那么返回出來的還是NULL。
這種方式等同于使用SUBSTRING(string,start_position,length)函數(shù),其中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
(10)REPLACE(string,string_tobe_replace,string_to_replace)函數(shù):此函數(shù)是實現(xiàn)字符串的替換功能,其中參數(shù)string 為要進行替換操作的主字符串,參數(shù)string_tobe_replace 為要被替換的字符串,即string_to_replace將替換string_tobe_replace中所有出現(xiàn)的地方。
select FName,REPLACE(FName,'i','e'),FIDNumber,
REPLACE(FIDNumber,'2345','abcd') FROM T_Person
借助替換為''來實現(xiàn)刪除字符串的功能:
SELECT FName, REPLACE(FName,'m','') ,FIDNumber,
REPLACE(FIDNumber,'123','') FROM T_Person
前面介紹過LTRIM(string)函數(shù)和RTRIM(string)函數(shù),兩者最終只能刪除兩側的空格,而對于在字符串里面的空格,則無能為力。而借助于REPLACE函數(shù)則可以輕松解決。
SELECT REPLACE(' abc 123 wpf',' ','') , REPLACE(' ccw enet wcf f',' ','')
(11)ASCII(string)函數(shù):此函數(shù)用來得到一個字符的ASCII 碼,它有且只有一個參數(shù),這個參數(shù)為待求ASCII碼的字符,如果參數(shù)為一個字符串則函數(shù)返回第一個字符的ASCII碼。
SELECT ASCII('a') , ASCII('abc')
注:如果傳進去的是NULL或者是'',那么返回出來的是NULL。
(12)CHAR(string)函數(shù):與(11)相反,此函數(shù)用來得到一個字符的ASCII 碼。
SELECT CHAR(56) , CHAR(90) ,'a', CHAR( ASCII('a') )
注:如果傳進去的是NULL,那么返回出來的是NULL。
(13)DIFFERENCE(string)函數(shù):此函數(shù)用來比較兩個字符串的發(fā)音相似度,它可以計算兩個字符串的發(fā)音特征值,并且比較它們,然后返回一個0至4 之間的一個值來反映兩個字符串的發(fā)音相似度,這個值越大則表示兩個字符串發(fā)音相似度越大。
SELECT DIFFERENCE(FName,'Merry') FROM T_Person
注:如果傳進去的是NULL,那么返回出來的是NULL。
相關文章
SQL?Server?2022?AlwaysOn新特性之包含可用性組詳解
這篇文章主要介紹了SQL?Server?2022?AlwaysOn新特性之包含可用性組介紹,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-04-04SQL Server跨服務器操作數(shù)據(jù)庫的圖文方法(LinkedServer)
這篇文章主要介紹了SQL Server跨服務器操作數(shù)據(jù)庫的方法,通過鏈接服務器(LinkedServer)實現(xiàn)SQL Server遠程鏈接MySql等數(shù)據(jù)庫,需要的朋友可以參考下2022-10-10深入分析MSSQL數(shù)據(jù)庫中事務隔離級別和鎖機制
事務隔離級別簡單的說,就是當激活事務時,控制事務內(nèi)因SQL語句產(chǎn)生的鎖定需要保留多入,影響范圍多大,以防止多人訪問時,在事務內(nèi)發(fā)生數(shù)據(jù)查詢的錯誤。設置事務隔離級別將影響整條連接。2014-08-08必須會的SQL語句(五) NULL數(shù)據(jù)處理和類型轉換
這篇文章主要介紹了sqlserver中NULL數(shù)據(jù)處理和類型轉換方法,需要的朋友可以參考下2015-01-01sqlserver 文件數(shù)據(jù)庫和關系數(shù)據(jù)庫的比較
本文概要地從數(shù)據(jù)格式、數(shù)據(jù)庫結構和WEB發(fā)布數(shù)據(jù)三個方面比較了文件數(shù)據(jù)庫和關系數(shù)據(jù)庫的異同,同時差別了文件數(shù)據(jù)庫和過去存儲數(shù)據(jù)的文件系統(tǒng)的不同2011-10-10SQL Server存儲過程中使用表值作為輸入?yún)?shù)示例
這篇文章主要介紹了SQL Server存儲過程中使用表值作為輸入?yún)?shù)示例,使用表值參數(shù),可以不必創(chuàng)建臨時表或許多參數(shù),即可向 Transact-SQL 語句或例程(如存儲過程或函數(shù))發(fā)送多行數(shù)據(jù),這樣可以省去很多自定義的代碼,需要的朋友可以參考下2015-07-07使用 TOP 子句限制UPDATE 語句更新的數(shù)據(jù)
這篇文章主要介紹了使用 TOP 子句限制UPDATE 語句更新的數(shù)據(jù),需要的朋友可以參考下2014-08-08