我已经导入了一个包含大约100,000条记录的表,其中一些记录需要删除。我想识别并删除所有记录,其中某个特定字段(称为MyQuery)包含用引号引起来的单词,但如果该字段中只有两个引号,则将它们删除。
例如,我想删除 “这是一个测验” - 但不是 - “这是“一项”测试”
非常感谢您的协助
答案 0 :(得分:0)
您可以这样做:
DELETE
-- SELECT * -- To test first!
FROM YourTable
WHERE LEN(MyQuery) - LEN(REPLACE(MyQuery, '"', '')) = 2;
AND MyQuery LIKE '"%"'
如果除去所有引号后的字段,则基本上是在比较长度。这是确定特定字符出现次数的简便方法。
在您发表评论之后,我添加了另一个条件,以便引号始终围绕该字段。
答案 1 :(得分:0)
我对所有人的道歉表示深深的疑问和清晰的结构。我想我能够根据您的建议得到答案!
select * from <table> where LEN(myquery) - LEN(REPLACE(myquery,'"','')) = 2 and myquery like '"%"'
非常感谢大家-您是最棒的!
答案 2 :(得分:-1)
您可以使用以下查询删除所有包含“”的记录,但以“”开头和结尾的记录除外:
DELETE From <TABLENAME> Where COL like '%"%' and (COL not like '"%' Or COL not like '%"')
或者,您可以使用:在这里,我们删除所有出现两次以上“
”的记录DELETE FROM <TABLENAME> WHERE (LEN(COL)-len(replace(COL,'"',''))) > 2