问题很自我解释.我想做一个简单的查找和替换,就像你在文本编辑器中我的数据库列中的数据一样(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.
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)
这指出了我正确的方向,但我有一个源自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)
这对我很有用.感谢这个论坛帖子,我发现了修复.希望这有助于其他人!