解释这些mysql字符串文字行

时间:2013-04-17 07:29:49

标签: mysql

我从Mysql官方网站dev.mysql.com中选择了这些行。 我无法理解这些线条的含义。

有几种方法可以在字符串中包含引号字符:

引用“'”的字符串中的“'”可写为“''”。

引用“”“的字符串中的”“”可写为“”“”。

我不明白这是怎么回事。

的MySQL>选择'hel''lo';

Outout:hel'lo

请帮助

2 个答案:

答案 0 :(得分:0)

你在单引号内有一个字符串,然后它找到另一个引用,由另一个代码转义。所以,它将转化为

'(start of string)hel'(escaping the next quote)'(the escaped quote)lo'(ending the string)

因此输出:

hel'lo

答案 1 :(得分:0)

这很简单。如果您需要在由这些引号分隔的字符串文字中放置引号,则不能仅使用独立引号字符(如'O'Brien'),因为没有简单的方法可以告诉哪个第二或第三个报价是收盘价。

所以他们引入了一条规则。如果SQL解释器位于带引号的字符串中并且它找到另一个引用,则它使用以下规则:

  • 如果引号后面紧跟另一个引号,则假定用户想要在文字中引用一个引号。
  • 否则它是文字的结束语。

因此,例如,考虑:

select * from people where surname = 'O'Brien' order by id

现在你和我可以分辨哪些引号实际上终止了字符串文字,因为我们了解名称是如何工作的。计算机并不认为这是理所当然的,而是要求:

select * from people where surname = 'O''Brien' order by id

并将文字内的''转换为单个'