首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server 字串函數大全:17 個常用函數語法與實戰範例

     編輯:關於SqlServer

字串操作函數分類速查

分類函數用途
搜尋/取代REPLACE取代子字串
STUFF刪除並插入 (指定位置/長度)
TRANSLATE (2017+)單字元對應取代
擷取/截取SUBSTRING依位置/長度擷取
LEFT / RIGHT取左/右 N 字元
CHARINDEX / PATINDEX尋找子字串/模式位置
PARSENAME解析點號分隔名稱 (伺服器.資料庫.結構.物件)
大小寫/修飾UPPER / LOWER大/小寫轉換
LTRIM / RTRIM / TRIM (2017+)移除前導/尾隨/雙側空白
QUOTENAME加上分隔符 `[]` 或 `''`,防 SQL Injection
長度/度量LEN / DATALENGTH字元數 / 位元組數
REPLICATE重複字串 N 次
SPACE產生 N 個空白
編碼/比較ASCII / UNICODE / NCHAR / CHAR字元碼轉換
SOUNDEX / DIFFERENCE發音相似度比對 (英文)
反轉REVERSE字串反序
串連+ / CONCAT (2012+) / CONCAT_WS (2017+)字串合併 (自動處理 NULL)

17 個核心函數詳細範例

1. REPLACE - 取代

SELECT REPLACE('lihan', 'a', 'b'); -- lihbn

2. SUBSTRING - 擷取 (1-based 索引)

SELECT SUBSTRING('lihan', 1, 3); -- lih (起始位置 1,長度 3)

3. CHARINDEX - 尋找位置 (找不到回 0)

SELECT CHARINDEX('a', 'lihan'); -- 4

4. ASCII - 字元碼

SELECT ASCII('lihan'); -- 108 (l)

5. NCHAR - Unicode 字元

SELECT NCHAR(3213); -- 顯示對應 Unicode 字元

6. SOUNDEX - 發音代碼

SELECT SOUNDEX('lihan'), SOUNDEX('lihon'); -- L546, L542

7. CHAR - ASCII 字元

SELECT CHAR(125); -- }

8. STR - 數值轉字串 (右對齊、預設長度 10)

SELECT STR(12345, 3);  -- *** (寬度不足)
SELECT STR(12345, 12); --        12345

9. DIFFERENCE - SOUNDEX 差異 (0-4,4 最相似)

SELECT DIFFERENCE('lihan', 'liha'); -- 3

10. STUFF - 刪除並插入

SELECT STUFF('lihan', 2, 3, 'lihan'); -- llihann (位置2刪3字元,插入lihan)

11. LEFT - 取左 N 字元

SELECT LEFT('lihan', 4); -- liha

12. RIGHT - 取右 N 字元

SELECT RIGHT('lihan', 4); --ihan

13. REPLICATE - 重複

SELECT REPLICATE('lihan', 4); -- lihanlihanlihanlihan

14. LEN - 字元長度 (不含尾隨空白)

SELECT LEN('lihan'); -- 5
SELECT LEN('lihan   '); -- 5 (DATALENGTH 會算空白)

15. REVERSE - 反轉

SELECT REVERSE('lihan'); -- nahil

16. UPPER / LOWER - 大小寫

SELECT LOWER(UPPER('lihan')); -- lihan

17. LTRIM / RTRIM / TRIM - 去空白

SELECT LTRIM('  lihan '); -- lihan  
SELECT RTRIM('  lihan '); --   lihan
SELECT TRIM('  lihan ');  -- lihan (SQL 2017+)

進階技巧

  • 分割字串:SQL 2016+ `STRING_SPLIT`、舊版用 `XML` + `CROSS APPLY` 或數字表。
  • 合併字串:SQL 2017+ `STRING_AGG`、舊版 `FOR XML PATH` + `STUFF`。
  • 效能:純量函數在 `WHERE` 子句中會阻礙索引求值,盡量改寫為 SARGable 形式或使用計算欄位+索引。

結語

熟練這 17 個函數涵蓋 90% 字串處理需求。新版本 (2016/2017/2022) 引入 `STRING_SPLIT`、`TRIM`、`CONCAT_WS`、`TRANSLATE`、`STRING_AGG` 大幅簡化常見作業,升級後請優先使用。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved