我从 Mysql 官方网站dev.mysql.com中选择了这些行。我无法理解这些行的含义。
有几种方法可以在字符串中包含引号字符:
用“'”引用的字符串中的“'”可以写成“''”。
用“"”引用的字符串中的“"”可以写成“""”。
没看懂这个sql怎么弄的。
mysql> 选择'hel''lo';
输出:你好
请帮忙
我从 Mysql 官方网站dev.mysql.com中选择了这些行。我无法理解这些行的含义。
有几种方法可以在字符串中包含引号字符:
用“'”引用的字符串中的“'”可以写成“''”。
用“"”引用的字符串中的“"”可以写成“""”。
没看懂这个sql怎么弄的。
mysql> 选择'hel''lo';
输出:你好
请帮忙
你在单引号中有一个字符串,然后它找到另一个引号,被另一个代码转义。所以,它会翻译成
'(start of string)hel'(escaping the next quote)'(the escaped quote)lo'(ending the string)
从而输出:
hel'lo
这很简单。如果您需要将引号放在由这些引号分隔的字符串文字中,则不能只使用独立的引号字符(如'O'Brien'
),因为没有简单的方法来判断第二个或第三个引号中的哪一个是结束引号。
所以他们引入了一个规则。如果 SQL 解释器在一个带引号的字符串中并且它找到另一个引号,它使用以下规则:
因此,例如,考虑:
select * from people where surname = 'O'Brien' order by id
现在你和我可以分辨出哪些引号实际上终止了字符串文字,因为我们了解名称的工作原理。计算机并不认为这是理所当然的,而是要求:
select * from people where surname = 'O''Brien' order by id
并将''
内部文字变成单个'
.