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

SQL 字串處理函數完整指南與實戰範例

     編輯:關於SqlServer

SQL Server 字串函數全方位解析

字串操作是資料清洗、報表產生、資料轉換的基礎。SQL Server 提供超過 20 個字串函數,涵蓋連接、截取、搜尋、替換、大小寫轉換等所有常見需求。

字串函數分類速查表

分類 函數 用途
連接 + (運算子) 連接兩個或多個字串、二進位串、欄位
CONCAT (SQL 2012+) 智慧連接,自動處理 NULL 值
大小寫轉換 UPPER 轉大寫
LOWER 轉小寫
LTRIM / RTRIM / TRIM 移除前導/尾隨/兩側空白
截取與擷取 SUBSTRING 從指定位置擷取指定長度
LEFT / RIGHT 從左/右側擷取指定字元數
STUFF 刪除並插入字串(強大的替換工具)
REVERSE 字串反轉
SPACE 產生指定數量的空白字串
搜尋與比對 CHARINDEX 尋找子字串起始位置
PATINDEX 支援萬用字元的模式搜尋
DIFFERENCE / SOUNDEX 發音相似度比對(模糊查詢)
REPLICATE 重複字串 N 次
轉換與編碼 ASCII 取得最左字元的 ASCII 碼
CHAR 依 ASCII 碼取得字元
STR 數值轉字串(可指定長度與小數位)

高頻使用函數深度解析

SUBSTRING — 最常用的擷取函數

SUBSTRING(expression, start, length)
-- 範例:擷取電子郵件的使用者名稱
SELECT SUBSTRING(email, 1, CHARINDEX('@', email) - 1) FROM users

STUFF — 進階替換神器

STUFF(char_expr1, start, length, char_expr2)
-- 範例:手機號碼遮罩處理
SELECT STUFF(phone, 4, 4, '****') FROM customers
-- 結果:0912****5678

CHARINDEX vs PATINDEX

  • CHARINDEX:精確搜尋,效能較好
  • PATINDEX:支援 %、_ 萬用字元,彈性較高

SOUNDEX / DIFFERENCE — 模糊比對利器

-- 發音相似度 1-4,4 為完全相同
SELECT DIFFERENCE('Smith', 'Smyth')  -- 返回 4
SELECT SOUNDEX('Smith')  -- 返回 S530

實戰技巧組合

移除多餘空白並正規化

SELECT UPPER(LTRIM(RTRIM(REPLACE(name, '  ', ' ')))) FROM products

動態產生固定長度代碼

SELECT RIGHT(REPLICATE('0', 6) + CAST(id AS VARCHAR), 6) FROM orders
-- 結果:000001, 000042, 001234
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved