SQL中的单引号和双引号有区别吗?

SQL中的单引号和双引号有区别吗?如果有,是什么?
谢谢!

阅读 50.7k
3 个回答

在标准 SQL 中,字符串使用的是单引号

如果字符串本身也包括单引号,则使用两个单引号(注意,不是双引号,字符串中的双引号不需要另外转义)。

你提到的 SQL 中的双引号字符串,应该不是标准 SQL,而是其它的数据库对 SQL 的扩展,比如在 MySQL 中允许使用单引号和双引号两种。

MySQL 参考手册:

字符串指用单引号(‘'’)或双引号(‘"’)引起来的字符序列。例如:

'a string'

"another string"

如果SQL服务器模式启用了NSI_QUOTES,可以只用单引号引用字符串。用双引号引用的字符串被解释为一个识别符。

看各个数据库的具体要求吧,比如在oracle里面表示字符串就只允许使用单引号

使用双字符:
插入时          库中
'aa''b''cc'     aa'b'cc
"aa"b""cc"      aa"b"cc

使用转义字符(\):
插入时          库中
'aa\'b\'cc'     aa'b'cc
"aa\"b\"cc"     aa"b"cc

在单引号包裹的字符串中使用双引号、在双引号包裹的字符串中使用单引号 不需要使用双引号或转义字符。
插入时          库中
"aa'b'cc"       aa'b'cc
'aa"b"cc'       aa"b"cc

反引号(“`”)

保留字不能用于表名,比如desc,此时需要加入反引号来区别,但使用表名时可忽略反引号。
create table desc报错
create table `desc`成功
create table `test`成功
drop table test成功
 
保留字不能用于字段名,比如desc,此时也需要加入反引号,并且insert等使用时也要加上反引号。
create table `test`(`desc` varchar(255))成功
insert into test(desc) values('fxf')失败
insert into test(`desc`) values('fxf')成功

ANSI_QUOTES Treat “"” as an identifier quote character (like the “`”
quote character) and not as a string quote character. You can still
use “`” to quote identifiers with this mode enabled. With ANSI_QUOTES
enabled, you cannot use double quotation marks to quote literal
strings, because it is interpreted as an identifier.
开启ANSI_QUOTES后,双引号将具有反引号类似的功能,不能再像单引号那样工作。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏