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 番目の位置にある文字が取得されます。