今天在写一条sql语句的时候,用的双引号,sql语句执行错误。记的同事问我mysql语句中的单引号和双引号有区别吗?回答是没有区别。
今天特地查了查,还是有点区别的。
mysql中的一段说明:
在mysql中,使用单引号和双引号俩种表达方法是一样的,尽管使用单引号的表达方法符合ANSI-SQL/92标准。
如果在字符串里有引号,则要用以下的不同方式来表示:
"abc'abc" 即 abc'abc
"abc""abc" 即 abc“abc
"abc/'abc" 即 abc'abc
"abc/"abc" 即 abc"abc
'abc"abc' 即 abc"abc
'abc''abc' 即 abc'abc
'abc/"abc' 即 abc"abc
‘abc/'abc' 即 abc'abc
可以看出,尽量还是使用单引号。
当修改了mysql的sql模式的时候(set @@global.sql_mode)的时候,选择不同sql模式,可能会出现单引号和双引号的区别。ANSI-SQL标准。
下面是转载的mysql手册:
mysql中的一个字符串是一个字符序列,由单引号(“'”)或双引号(“"”)字符(后者只有你不在ANSI模式运行)包围。例如:
'a string' "another string"
在字符串内,某个顺序有特殊的意义。这些顺序的每一个以一条反斜线(“/”)开始,称为转义字符。MySQL识别下列转义字符:
-
一个ASCII 0 (
NUL
)字符。 - 一个新行符。
- 一个定位符。
- 一个回车符。
- 一个退格符。
- 一个单引号( “'”)符。
- 一个双引号( “"”)符。
- 一个反斜线( “/”)符。
- 一个“ %”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。
- 一个“ _”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。
/0
/n
/t
/r
/b
/'
/"
//
/%
/_
注意,如果你在某些正文环境中使用“/%”或“/%_”,这些将返回字符串“/%”和“/_”而不是“%”和“_”。