MySQL 多行更新是否应使用单引号?

MySQL 多行更新是否应使用单引号?

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

相关内容