当您在 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”字符。