MySql - 试图标点句子

时间:2012-11-05 03:37:10

标签: mysql special-characters

这是我的查询,它试图在每个不以正确标点符号结尾的句子结尾处设置句号

UPDATE SentenceTable SET sentence=concat(sentence, '.') WHERE sentence NOT LIKE '%.' OR sentence NOT LIKE '%?' OR sentence NOT LIKE '%!';

然而,这最终会在每一句话的结尾处完全停止。我担心上面的正则表达式有问题,也许我没有正确地转义一些特殊字符?我究竟做错了什么?该查询应如何阅读?

谢谢!

1 个答案:

答案 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时,它会评估所有条件,并且由于最后一个条件失败,句子将不会更新!