SQL Server,如何查询包含多个撇号的字符串?

时间:2015-10-05 21:46:10

标签: sql-server

我的程序中存在一个错误,它在我们的数据库中的字符串中复制撇号。它是字符串' RAYNAUD&S; S SYNDROME'那里有超过32k的撇号。编写SELECT查询以调用具有多个撇号的字符串的最佳方法是什么?我在线选择带撇号的字符串的所有演示只是处理单个撇号。

3 个答案:

答案 0 :(得分:0)

这将返回YourTable中YourColumn包含至少一个撇号的所有行。将0替换为您需要检查的任何撇号数。

select *
from [YourTable]
where LEN([YourColumn]) - LEN(REPLACE([YourColumn], '''', '')) > 0

答案 1 :(得分:0)

要提取包含许多撇号的记录,您可以编写如下查询:

create table test (somedata varchar(100));
insert into test values ('''hello'' ''again''')

select * from test 
where len(somedata) - len(REPLACE(somedata, '''', '')) > 0

要更新所有这些记录,您可以

update test
set somedata = REPLACE(somedata, '''', '')
where len(somedata) - len(REPLACE(somedata, '''', '')) > 0

答案 2 :(得分:0)

两种方法:

如果你专门寻找你提到的字符串的坏版本

SELECT * FROM myTable WHERE myColumn LIKE 'RAYNAUD''S SYNDROME' AND LEN(myColumn) > 18

另一个更常用于查找超过2个单引号的行(您可以将其更改为查找其他一些阈值数字)

SELECT * FROM myTable WHERE LEN(REPLACE(myColumn,'''','') < LEN(myColumn) - 2