这是我的查询,它试图在每个不以正确标点符号结尾的句子结尾处设置句号
UPDATE SentenceTable SET sentence=concat(sentence, '.') WHERE sentence NOT LIKE '%.' OR sentence NOT LIKE '%?' OR sentence NOT LIKE '%!';
然而,这最终会在每一句话的结尾处完全停止。我担心上面的正则表达式有问题,也许我没有正确地转义一些特殊字符?我究竟做错了什么?该查询应如何阅读?
谢谢!
答案 0 :(得分:2)
您在每个OR
条款之间使用sentence NOT LIKE ..
;使用AND
应该解决这个问题:
UPDATE
SentenceTable
SET
sentence=concat(sentence, '.')
WHERE
sentence NOT LIKE '%.'
AND sentence NOT LIKE '%?'
AND sentence NOT LIKE '%!';
这样做的原因是,假设sentence
以!
结尾,例如“这是一个句子!”。你的第一个条款是sentence NOT LIKE '%.'
。好吧,这句话不以.
结尾,因为你只使用OR
WHERE
- 子句停止解析其余的句子。当您切换到AND
时,它会评估所有条件,并且由于最后一个条件失败,句子将不会更新!