標籤:
- 1. len():計算字串長度
- 2. lower()、upper():字串轉換為大、小寫
- 3. ltrim()、rtrim():截去字串左、右側空格
- 4. space():返回由重複的空格組成的字串
- 5. substring()、left()、right():取子字串
- 6. replace():字串替換
- 7. reverse():返回字串值的逆向值
- 8. stuff():刪除指定長度的字元,並在指定的起點處插入另一組字元
- 9. replicate():以指定的次數重複字串值
- 10. charindex():返回字串中指定運算式的開始位置
- 11. patindex():返回指定“運算式中模式”第一次出現的開始位置
- 12. unicode():返回輸入運算式的第一個字元的整數值
- 13. str():返回由數字資料轉換來的字元資料
- 14. ascii():得到字元的ASCII碼
- 15. Char():得到一個與ASCII碼數字對應的字元
- 16. nchar():返回返回具有指定的整數代碼的 Unicode 字元
- 17. quotename() 轉義
- 18. soundex():發音匹配度
以下所有例子均Studnet表為例:
1. len():計算字串長度
len()用來計算字串的長度,每個中文漢字或英文字母都為一個長度
select sname, len(sname) from student
2. lower()、upper():字串轉換為大、小寫
lower() 用來將一個字串轉換為小寫,upper() 用來將一個字串轉換為大寫
select lower(‘I AM A STUDENT !‘)select upper(‘i am a student !‘)
3. ltrim()、rtrim():截去字串左、右側空格
ltrim():用來將一個字串左側的空格去掉,rtrim()用來將一個字串右側的空格去掉
declare @str varchar(100);set @str=‘ 我的左側有空格!‘;select @str as 初始字元, len(@str) as 初始長度, ltrim(@str) as 現有字元, len(ltrim(@str)) as 現有長度;
返回結果:初始長度分別為9和8
4. space():返回由重複的空格組成的字串
space(integer_expression):integer_expression 指示空格個數的正整數。如果 integer_expression 為負,則返回Null 字元串。
select ‘A‘+ space(2)+‘B‘ /* 結果: ‘A B‘ */
5. substring()、left()、right():取子字串
substring(string, start_position, length):可以從任意位置取任意長度的子字串,
left(string, length):從左側開始取子字串
right(string, length):從右側開始取子字串
select substring(‘HelloWorld!‘, 6, 6) /* 結果:World */select left(‘HelloWorld!‘, 5) /* 結果:Hello */select right(‘HelloWorld!‘, 6) /* 結果:oWorld */
6. replace():字串替換
replace(string, 要被替換的字串, 替換的字串)
select replace(‘HelloWorld!‘,‘o‘,‘e‘) /* 結果為:HelleWerld! */
7. reverse():返回字串值的逆向值
reverse(string_expression)
select reverse(‘abc‘) /* 結果為:cba*/
8. stuff():刪除指定長度的字元,並在指定的起點處插入另一組字元
stuff(character_expression, start, length, character_expression) start:整數,指定刪除和插入的開始位置。 length:整數,指定要刪除的字元數。
select stuff(‘abcdefgf‘, 2, 6, ‘Hello-‘) /* 結果為:aHello-f */ select stuff(‘abcdefgf‘, 2, 6, ‘Hello‘) /* 結果為:aHellof */
9. replicate():以指定的次數重複字串值
replicate(string_expression ,integer_expression)
select replicate(‘abc‘, 4) /* 結果為:abcabcabcabc */
10. charindex():返回字串中指定運算式的開始位置
charindex(expression1 ,expression2 , start_location )或charindex(expression1 ,expression2 )
expression1在expression2 中的開始位置
select charindex(‘H‘,‘elloHWorldHabc‘) /* 結果為:5 */
11. patindex():返回指定“運算式中模式”第一次出現的開始位置
patindex(‘%pattern%‘, expression):返回指定“運算式中某模式”第一次出現的起始位置; 如果在全部有效文本和字元資料類型中沒有找到該模式,則返回零。
select patindex(‘%Hello%‘,‘WorldHello‘) 結果為:6
12. unicode():返回輸入運算式的第一個字元的整數值
unicode(‘ncharacter_expression‘):‘ncharacter_expression‘ 為 nchar 或 nvarchar 運算式。
select unicode(‘a‘) /* 結果為:97 */select unicode(‘abc‘) /* 結果為:97 */
13. str():返回由數字資料轉換來的字元資料
str(float_expression, length ,decimal ) float_expression:帶小數點的近似數字 (float) 資料類型的運算式。 length:總長度。它包括小數點、符號、數字以及空格。預設值為 10。 * decimal:小數點右邊的小數位元。decimal 必須小於等於 16。如果 decimal 大於 16,則將結果截斷為小數點右邊的 16 位。
select str(1234.436, 3) /* 結果為:‘**‘;當運算式超出指定長度時返回‘**‘ */select len(str(1234.436, 3)) /* 結果為:3 */ select str(123.436), len(str(123.436)) /* 結果為:‘123‘, 10 */select str(123.436, 6), len(str(123.436, 6)) /* 結果為:‘123‘, 6 */select str(123.436, 6, 1), len(str(123.436,6, 1)) /* 結果為:‘123.4‘, 6 */
14. ascii():得到字元的ASCII碼
ascii():用來得到一個字元的ASCII碼,它有且只有一個參數,如果參數為字串,那麼取第一個字元的ASCII碼
select ascii(‘H‘) /* 結果為:72 */select ascii(‘HelloWorld!‘) /* 結果為:72 */
15. Char():得到一個與ASCII碼數字對應的字元
Char(integer_expression):integer_expression 介於 0 和 255 之間的整數。如果該整數運算式不在此範圍內,將返回 NULL 值。
select Char(72) /* 結果為:H */
16. nchar():返回返回具有指定的整數代碼的 Unicode 字元
nchar(integer_expression) integer_expression 介於 0 與 65535 之間的正整數。如果指定了超出此範圍的值,將返回 NULL。
select nchar(20013) /* 結果為:‘中‘ */select NCHAR(72) /* 結果為:‘H‘ */
17. quotename() 轉義
參考《SqlServer中quotename用法與執行個體》
18. soundex():發音匹配度
有時候我們並不知道一個人姓名的拼字,但是我們知道他的發音,這時我們可以進行發音的匹配度測試。 soundex():用於計算一個字串的發音特徵性,這個特徵值為一個四個字元的字串,特徵性的第一個字元總是初始字串中的第一個字元,而後是一個三位元的數值。
select sname, soundex(sname) from student
結果為:
發音特徵值的含義非常複雜,如果要根據兩個發音特徵值來分析兩個字串的發音相似性的話非常麻煩。
可以使用difference()來簡化兩個字串的發音相似性比較,它可以計算兩個字串的發音特徵值,並且比較它們,然後返回一個0~4之間的值來反映兩個字串的發音相似性,這個值越大則表示兩個字串的發音相似性越大。
select sname, soundex(sname), difference(sname,‘Herry‘) from stu
結果為:
SQL Server字串函數(超實用)