標籤:style blog http io ar color os 使用 sp
轉自:http://www.cnblogs.com/jiajiayuan/archive/2011/06/16/2082488.html
以下所有例子均Studnet表為例:
計算字串長度
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 為負,則返回Null 字元串。
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 位。
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))
結果為:
得到字元的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
結果為:
發音特徵值的含義非常複雜,如果要根據兩個發音特徵值來分析兩個字串的發音相似性的話非常麻煩。
可以使用difference()來簡化兩個字串的發音相似性比較,它可以計算兩個字串的發音特徵值,並且比較它們,
然後返回一個0~4之間的值來反映兩個字串的發音相似性,這個值越大則表示兩個字串的發音相似性越大。
select sname,soundex(sname), difference(sname,‘Herry‘) from stu
結果為:
sqlserver 字串函數