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

SQL Server REPLACE 函數批量替換欄位值:含 NTEXT/TEXT 大欄位處理技巧

     編輯:關於SqlServer

REPLACE 是字串替換的核心函數,搭配 UPDATE 可批量修正髒資料。

基本用法

UPDATE TableName
SET ColumnName = REPLACE(ColumnName, 'old_value', 'new_value');

大型物件 (LOB) 欄位限制與解法

NTEXT、TEXT、IMAGE (已淘汰類型) 不支援直接 REPLACE,會報錯:

"函數 replace 的參數 1 的數據類型 ntext 無效"

解法:轉型為 VARCHAR(MAX)/NVARCHAR(MAX)

UPDATE TableName
SET ColumnName = REPLACE(CAST(ColumnName AS NVARCHAR(MAX)), 'old_value', 'new_value');

SQL Server 2005+ 建議直接使用 NVARCHAR(MAX)、VARCHAR(MAX)、VARBINARY(MAX) 取代舊 LOB 類型,原生支援所有字串函數。

進階場景

多值批量替換 (巢狀 REPLACE)

UPDATE Products
SET Description = REPLACE(REPLACE(REPLACE(Description, '舊品牌', '新品牌'), '舊型號', '新型號'), '舊規格', '新規格');

條件式替換 (CASE + REPLACE)

UPDATE Orders
SET Memo = CASE 
    WHEN Memo LIKE '%舊倉%' THEN REPLACE(Memo, '舊倉', '新倉')
    WHEN Memo LIKE '%舊區%' THEN REPLACE(Memo, '舊區', '新區')
    ELSE Memo
END;

效能提示

  • 大表更新加 WHERE ColumnName LIKE '%old_value%' 縮小掃描範圍 (仍可能掃描,但可利用全文索引)。
  • 極大表分批更新 (參考 UPDATE 分批模板)。
  • 替換前備份資料或使用交易包裝,驗證無誤再提交。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved