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

SQL REPLACE 函數完整教學:字串替換語法、參數說明、二進位支援與實戰範例

     編輯:關於SqlServer

REPLACE 是 SQL Server 內建字串函數,用於將指定子字串全部替換為新字串。支援字元與二進位資料類型,回傳型別跟隨第一個引數。本文詳細說明語法、參數、回傳型別規則、巢狀替換技巧與效能注意事項。

語法

REPLACE ( STRING_EXPRESSION1, STRING_EXPRESSION2, STRING_EXPRESSION3 )

參數說明

參數名稱說明資料類型
1STRING_EXPRESSION1被搜尋的原始字串CHAR, VARCHAR, NCHAR, NVARCHAR, BINARY, VARBINARY
2STRING_EXPRESSION2要尋找的子字串 (不可為空字串)同上
3STRING_EXPRESSION3替換用的字串同上

回傳型別規則

  • 若引數 1 為字元類型 → 回傳字元類型 (隱含轉換至最高優先級類型)。
  • 若引數 1 為二進位類型 → 回傳二進位類型。
  • 若引數 1 為 NULL → 回傳 NULL。

基本範例

SELECT REPLACE('ABCDEFGHICDE', 'CDE', 'XXX');
-- 結果: ABXXXFGHIXXX

進階用法

巢狀替換:多組關鍵字一次替換

DECLARE @TEXT NVARCHAR(MAX) = N'舊系統_模組A_測試';
SELECT REPLACE(REPLACE(REPLACE(@TEXT, N'舊系統', N'新系統'), N'模組A', N'模組B'), N'測試', N'正式');
-- 結果: 新系統_模組B_正式

搭配 UPDATE 大量替換資料表欄位

UPDATE PRODUCTS
SET DESCRIPTION = REPLACE(DESCRIPTION, N'舊品牌', N'新品牌')
WHERE DESCRIPTION LIKE N'%舊品牌%';

清理資料:移除特殊字元

SELECT REPLACE(REPLACE(REPLACE(PHONE, '-', ''), '(', ''), ')', '') AS CLEAN_PHONE
FROM CUSTOMERS;

效能與限制

  • ⚠️ REPLACE 會掃描整個字串,對大型 VARCHAR(MAX)/NVARCHAR(MAX) (如 > 1MB) 效能較差。
  • ⚠️ 無法使用萬用字元,需精確匹配子字串。
  • ✅ 針對固定模式清理 (如電話格式、代碼前綴) 效能極佳。
  • ✅ 可建立計算欄持久化替換結果,避免重複計算。

相關函數對照

函數用途差異
REPLACE全域替換所有匹配不可用萬用字元
STUFF指定位置/長度刪除並插入精確控制位置
TRANSLATE (SQL 2017+)字元對字元對應替換單字元映射,速度更快
REGEXP_REPLACE (Azure SQL / 2022+)正規表示式替換支援複雜模式
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved