SQL中单引号('')与双引号("")是否可以互换使用?
SQL中单引号与双引号能否互换使用?
SQL里单引号和双引号不能随意互换,二者作用有明确区别,具体还要看你使用的数据库系统:
- 单引号:标准SQL中专门用来包裹字符串常量(比如示例里的
'Comedy'),所有数据库都遵循这个规则,是字符串值的通用安全写法。 - 双引号:标准SQL中用来包裹标识符(比如表名、列名),当标识符包含特殊字符或与关键字重名时使用。但不同数据库对双引号的处理有差异:
- MySQL:默认模式下双引号和单引号一样处理字符串(非标准行为),但开启
ANSI_QUOTES模式后,双引号仅能包裹标识符。 - PostgreSQL、SQL Server:严格遵循标准,双引号仅用于标识符,字符串必须用单引号。
- MySQL:默认模式下双引号和单引号一样处理字符串(非标准行为),但开启
看你给出的示例代码:
第一个查询是正确的标准写法:
SELECT * FROM project_id WHERE Genre = 'Comedy'
第二个查询存在两处错误:
- WHERE子句缺少比较运算符
=,语法本身不成立; - 即便补上
=,"Comedy"仅在MySQL默认模式下会被识别为字符串,在其他数据库或MySQL开启ANSI模式时,会被当作名为Comedy的列,直接导致报错。
总结:不要随意互换单双引号,字符串用单引号是通用且不易出错的选择;处理特殊标识符时,再根据对应数据库的规则使用双引号。
内容的提问来源于stack exchange,提问作者LauB
相关产品推荐
相关产品推荐

