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

SQL Server 字串函數完整指南:ASCII、CHAR、LOWER 等核心轉換函數實務應用

     編輯:關於SqlServer

字串函數是 T-SQL 資料清洗、格式化、報表產出的基石。掌握核心轉換函數的語法、回傳型別、邊界行為,能撰寫出健壯且高效的字串處理邏輯。

字元編碼轉換三劍客

函數功能語法回傳型別關鍵行為
ASCII(char_expr)回傳最左字元的 ASCII 碼值ASCII('A') → 65int多字元字串僅取第一字元;空字串回傳 0
CHAR(int_expr)將 ASCII 碼轉為字元CHAR(65) → 'A'char(1)輸入超出 0-255 回傳 NULL
LOWER(char_expr)字串轉小寫LOWER('SQL') → 'sql'varchar/nvarchar依照資料庫定序規則,Unicode 字元正確處理

ASCII 函數語法

ASCII 範例

ASCII 執行結果

CHAR 函數語法

CHAR 範例

LOWER 函數語法

實務陷阱與最佳實務

  • 純數字字串不需引號:ASCII(123) 視為數值 123 而非字串 '123',會回傳字元 '1' 的 ASCII 碼 49。含非數字字元時必須加單引號:ASCII('A1')。
  • CHAR 只回傳單一字元,組合字串請用 CHAR(13)+CHAR(10) 產生 CRLF。
  • LOWER/UPPER 為非決定性函數(同輸入在不同定序下可能產生不同輸出),不可用於計算欄位索引。
  • 大量資料轉換時,考慮使用 COLLATE 指定二進位定序 (Latin1_General_BIN) 加速比較/排序。

進階組合應用範例

-- 產生固定長度代碼:前綴 + 零填充流水號
DECLARE @prefix char(3) = 'INV', @seq int = 42;
SELECT @prefix + RIGHT('000000' + CAST(@seq AS varchar(6)), 6) AS InvCode;
-- 結果: INV000042

-- 移除控制字元 (含 Tab, CR, LF)
SELECT REPLACE(REPLACE(REPLACE(DirtyCol, CHAR(9), ''), CHAR(13), ''), CHAR(10), '') AS CleanCol;

-- 大小寫不敏感搜尋 (效能優於 LOWER)
SELECT * FROM Products WHERE ProductName COLLATE Latin1_General_CI_AI LIKE '%keyword%';

字串函數看似簡單,但定序敏感性、隱含轉換、NULL 傳播等細節決定了生產環境的穩定度。建立團隊共用的「字串處理最佳實務清單」,納入程式碼審查標準。

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