0

我遇到了一个错误的 SQL 存储过程引起的情况,现在我面临着一项可能令人生畏的数据清理任务。

总而言之,我们的数据库中有可能包含任意数量的重复撇号的数据。因此,数据可能如下所示:

“这是一条评论”
“这条评论没问题,但不受影响”
“此评论的文字有双撇号”
“这条评论''''''''''''''''''''''''''''''s text has many double apostrophes”

因此,我们可以轻松地查找行 WHERE Comment LIKE '%''''%' 来查找错误数据,但是有没有办法创建一个 UPDATE 脚本可以一举解决这些问题?

我充满希望,但并不期待。我希望手动完成不会是一项痛苦的任务,但是嘿'我内心很懒 :-)

4

2 回答 2

0

假设您的文本中有一个未表示的字符,例如 Char(0),这里是伪代码:

UPDATE Yourtable
SET Col = Replace(Replace(Replace("'", Char(0) + "'"), "'" + Char(0), ""), Char(0), "")
WHERE Col LIKE "%''%"

这会将任意数量的单引号重复变成一个。我不知道您的 DBMS,或者我可以尝试给出确切的语法。

我知道我上面的双引号对于大多数 DBMS 来说必须是单引号。

于 2012-12-21T23:41:04.877 回答
0

欢迎来到堆栈溢出。

如果这些数据始终是固定长度,我会通过查询找到集合并用单个“替换”函数替换坏数据。如果还有更多内容,您可以使用 charindex 来查找要查找和替换的模式。通常,对于大规模替换,当我想进行自我更新时,我会测试逻辑。

这是一个带有表变量的简单示例:

declare @Table table ( data varchar(32) );

insert into @Table values ('stut""""""'),('stu""""""');

select 
    *
,   replace(data, '""""""', '')
from @Table

update @Table 
set data = replace(data, '""""""', '')

select *
from @Table
于 2012-12-21T23:27:30.997 回答