Следует ли использовать одинарные кавычки для многострочных обновлений MySQL?

Следует ли использовать одинарные кавычки для многострочных обновлений MySQL?

При выполнении SQL UPDATE для нескольких строк в MySQL, похоже, вы можете либо заключать каждое значение в одинарные кавычки, либо нет, и это даст тот же результат.

Есть ли смысл использовать одинарные кавычки в запросе 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'.

Связанный контент