0

これが私のクエリです。適切な句読点で終わらないすべての文の終わりにピリオドを入れようとします

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

ただし、これはすべての文の終わりに終止符を置くことになります。上からの正規表現に問題があるのではないかと思います。特殊文字を正しくエスケープしていないのではないでしょうか。私は何が間違っているのですか?このクエリはどのように読み取る必要がありますか?

ありがとう!

4

1 に答える 1

2

ORsentence 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 '%.'です。ええと、この文は。で終わっていません。-clause.だけを使用しORているのでWHERE、残りの句の解析を停止します。に切り替えると、すべてANDの条件が評価され、最後の条件が失敗したため、文は更新されません。

于 2012-11-05T03:39:33.650 に答える