如何在MsSQL中进行简单的"查找和替换"?

Jia*_*aro 85 sql sql-server

问题很自我解释.我想做一个简单的查找和替换,就像你在文本编辑器中我的数据库列中的数据一样(MS Windows Server 2003上的MsSQL)

SQL*_*ace 154

以下查询用a字符替换每个b字符.

UPDATE 
    YourTable
SET 
    Column1 = REPLACE(Column1,'a','b')
WHERE 
    Column1 LIKE '%a%'
Run Code Online (Sandbox Code Playgroud)

这不适用于SQL Server 2003.

  • 我们需要“哪里”吗? (3认同)

Jia*_*aro 18

像这样:

BEGIN TRANSACTION; 
UPDATE table_name
  SET column_name=REPLACE(column_name,'text_to_find','replace_with_this'); 
COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)

示例:将<script ...替换为<a ...以消除javascript漏洞

BEGIN TRANSACTION; UPDATE testdb
SET title=REPLACE(title,'script','a'); COMMIT TRANSACTION;
Run Code Online (Sandbox Code Playgroud)


Bri*_*kau 8

这指出了我正确的方向,但我有一个源自MSSQL 2000的数据库,并且仍在使用ntext我正在替换的列的数据类型.当您尝试在该类型上运行REPLACE时,您会收到以下错误:

参数数据类型ntext对替换函数的参数1无效.

如果列数据适合nvarchar,最简单的修复方法是在替换期间转换列.借用接受的答案中的代码:

UPDATE YourTable
SET Column1 = REPLACE(cast(Column1 as nvarchar(max)),'a','b')
WHERE Column1 LIKE '%a%'
Run Code Online (Sandbox Code Playgroud)

这对我很有用.感谢这个论坛帖子,我发现了修复.希望这有助于其他人!