複数行の MySQL UPDATE には一重引用符を使用する必要がありますか?

複数行の MySQL UPDATE には一重引用符を使用する必要がありますか?

MySQL で複数の行に対して SQL UPDATE を実行する場合、すべての値を一重引用符で囲んでも囲まなくても、同じ結果が生成されるようです。

一重引用符を使用しないでも同じ結果になる場合、UPDATE クエリで一重引用符を使用する理由はありますか? 何か違いはありますか?

引用符なしの例:

UPDATE superuser
SET poop = rainbows
WHERE id IN (1, 2, 3);

引用符付きの例:

UPDATE superuser
SET poop = rainbows
WHERE id IN ('1', '2', '3');

答え1

一般的に、すべての文字列は引用符で囲み、数値は引用符なしで囲みます。ただし、文字列に一重引用符があると SQL が壊れてしまうため、一重引用符を二重にしてエスケープします。

SELECT * FROM superuser WHERE poop = 'johnny''s'
-- note how the string [johnny's] have double quotes

一方、SQL で数字を引用符で囲むのはよくありません。SQL は暗黙的にこれらの値を変換しようとしますが、望ましくない結果につながる可能性があります。たとえば、CHAR 型があり、引用1符で囲まれた文字ではなく引用符で囲まれていない文字を入力'1'すると、実際の「1」文字ではなく、文字セットの 1 番目の位置にある文字が取得されます。

関連情報