天天看點

SQL點滴30—SQL中常用的函數

該文章轉載自http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html

别人的總結,很詳細。

以下所有例子均Studnet表為例:

SQL點滴30—SQL中常用的函數

計算字元串長度

len()用來計算字元串的長度

select sname ,len(sname) from student

字元串轉換為大、小寫

lower() 用來将一個字元串轉換為小寫,upper() 用來将一個字元串轉換為大寫

select lower('I AM A STUDENT !')

select upper('i am a student !')

截去字元串左、右側空格                                              

ltrim() 用來将一個字元串左側的空格去掉 ,rtrim()用來将一個字元串右側的空格去掉

declare @str varchar(100)

set @str=' 我的左側有空格!'

select @str as 初始字元, len(@str) as 初始長度,ltrim(@str) as 現有字元,len(ltrim(@str)) as 現有長度

傳回由重複的空格組成的字元串

space(integer_expression)    integer_expression 訓示空格個數的正整數。如果 integer_expression 為負,則傳回空字元串。

select 'A'+ space(2)+'B'

取子字元串

substring(string,start_position,length) 可以從任意位置取任意長度的子字元串,

left(string,length)  從左側開始取子字元串

right(string,length)從右側開始取子字元串

select substring('HelloWorld!',6,6)

select left('HelloWorld!' ,5)

select right('HelloWorld!' ,6)

字元串替換

replace(string,要被替換的字元串,替換的字元串)

select replace('HelloWorld!','o','e') 結果為:HelleWerld!

傳回字元串值的逆向值

reverse(string_expression)

select reverse('abc') 結果為:cba

删除指定長度的字元,并在指定的起點處插入另一組字元

stuff(character_expression , start , length ,character_expression)

start 一個整數值,指定删除和插入的開始位置。

length 一個整數,指定要删除的字元數。

select stuff('abcdefg',1,6,'Hello ') 結果為:Hello g

以指定的次數重複字元串值

replicate(string_expression ,integer_expression)

select replicate('abc',4) 結果為:abcabcabcabc

傳回字元串中指定表達式的開始位置

charindex(expression1 ,expression2  , start_location )或charindex(expression1 ,expression2 )

expression1在expression2 中的開始位置

select charindex('H','elloHWorld') 結果為:5

傳回指定表達式中模式第一次出現的開始位置

patindex('%pattern%',expression) 傳回指定表達式中某模式第一次出現的起始位置;

如果在全部有效的文本和字元資料類型中沒有找到該模式,則傳回零。

select patindex('%Hello%','WorldHello') 結果為:6

傳回輸入表達式的第一個字元的整數值

unicode( 'ncharacter_expression' )    ' ncharacter_expression ' 為 nchar

或 nvarchar 表達式。

select unicode('a') 結果為:97

select unicode('abc') 結果為:97

傳回由數字資料轉換來的字元資料

str(float_expression , length ,decimal )

float_expression 帶小數點的近似數字 (float) 資料類型的表達式。

length               總長度。它包括小數點、符号、數字以及空格。預設值為 10。

decimal             小數點右邊的小數位數。decimal 必須小于等于 16。如果 decimal 大于 16,則将結果截斷為小數點右邊的 16 位。

SQL點滴30—SQL中常用的函數

select str(123.436,2), len(str(123.436,2)) //當表達式超出指定長度時,字元串為指定長度傳回 **

select str(123.436), len(str(123.436)),

str(123.436,6), len(str(123.436,6)),

str(123.436,6,1), len(str(123.436,6,1)) //由六個數字和一個小數點組成的表達式轉換為有六個位置的字元串。

數字的小數部分舍入為一個小數位。

select str(1234.436), len(str(1234.436)),

str(1234.436,6), len(str(1234.436,6)),

str(1234.436,6,1),len(str(1234.436,6,1))

SQL點滴30—SQL中常用的函數

結果為:

SQL點滴30—SQL中常用的函數
SQL點滴30—SQL中常用的函數
SQL點滴30—SQL中常用的函數

得到字元的ASCII碼

ascii()用來得到一個字元的ASCII碼,它有且隻有一個參數,如果參數為字元串,那麼取第一個字元的ASCII碼

select ascii('H')

select ascii('HelloWorld!')

得到一個與ASCII碼數字對應的字元

Char(integer_expression)  integer_expression 介于 0 和 255 之間的整數。如果該整數表達式不在此範圍内,将傳回 NULL 值。

select Char(72)

傳回傳回具有指定的整數代碼的 Unicode 字元

nchar(integer_expression)  integer_expression 介于 0 與 65535 之間的正整數。如果指定了超出此範圍的值,将傳回 NULL。

select nchar(1000)

傳回帶有分隔符的 Unicode 字元串,分隔符的加入可使輸入的字元串成為有效的 SQL Server 分隔辨別符。

quotename('character_string')  character_string 不得超過 128 個字元。超過 128 個字元的輸入将傳回 NULL。

select quotename('abc[aa]def')

結果為:[abc[]]def]  請注意,字元串 abc[]def 中的右方括号有兩個,用于訓示轉義符。

select QUOTENAME('abcdef','''') --分隔符是兩個單引号

-- 'abcdef'

select QUOTENAME('abcdef') --分隔符是]

-- [abcdef]

select QUOTENAME('abcdef','{}') --分隔符是}

-- {abcdef}

發音比對度

有時候我們并不知道一個人姓名的拼寫,但是我們知道他的發音,這時我們可以進行發音的比對度測試。

soundex()用于計算一個字元串的發音特征性,這個特征值為一個四個字元的字元串,特征性的第一個字元總是初始字元串中的第一個字元,而後是一個三位數的數值。

select sname ,soundex(sname) from student

SQL點滴30—SQL中常用的函數

發音特征值的含義非常複雜,如果要根據兩個發音特征值來分析兩個字元串的發音相似度的話非常麻煩。

可以使用difference()來簡化兩個字元串的發音相似度比較,它可以計算兩個字元串的發音特征值,并且比較它們,

然後傳回一個0~4之間的值來反映兩個字元串的發音相似度,這個值越大則表示兩個字元串的發音相似度越大。

select sname,soundex(sname), difference(sname,'Herry') from stu

SQL點滴30—SQL中常用的函數