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

时间:2010-01-02 18:18:16

标签: sql database quotes

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

6 个答案:

答案 0 :(得分:128)

单引号用于指示SQL中字符串的开头和结尾。双引号通常不在SQL中使用,但可能因数据库而异。

坚持使用单引号。

无论如何,这是主要用途。您可以对列别名使用单引号 - 您希望在应用程序代码中引用的列名称不是在数据库中实际调用列的名称。例如:PRODUCT.id更具可读性product_id,因此您可以使用以下任一项:

  • SELECT PRODUCT.id AS product_id
  • SELECT PRODUCT.id 'product_id'

可以在Oracle,SQL Server,MySQL中运行......但是我知道有些人说TOAD IDE在使用单引号方法时似乎有点悲伤。

当列别名包含空格字符(例如product id)时,您必须使用单引号,但建议不要将列别名设为多个单词。

答案 1 :(得分:59)

单引号分隔字符串常量或日期/时间常量。

双引号分隔标识符,例如表名或列名。这通常仅在您的标识符不符合简单标识符规则时才有必要。

另见:

您可以根据ANSI标准使MySQL使用双引号:

SET GLOBAL SQL_MODE=ANSI_QUOTES

您可以使Microsoft SQL Server根据ANSI标准使用双引号:

SET QUOTED_IDENTIFIER ON

答案 2 :(得分:55)

两个简单的规则让我们记住在哪种情况下使用什么:

  • [ S ]单引号适用于[ S ]转录; [ D ]双引号用于[ D ] atabase标识符;
  • `符号与符号相同。您可以在启用ANSI_QUOTES的情况下使用

答案 3 :(得分:32)

在ANSI SQL中,双引号引用对象名称(例如表格),允许它们包含其他方式不允许的字符,或者与保留字词相同(实际上避免这样做。)

单引号用于字符串。

然而,MySQL没有注意到标准(除非它的SQL_MODE被更改)并允许它们可互换地用于字符串。

此外,Sybase和Microsoft还使用方括号进行标识符引用。

所以它有点特定于供应商。

其他数据库如Postgres和IBM实际上遵守ansi标准:)

答案 4 :(得分:7)

我使用这个助记符:

  • 单引号用于字符串(一件事)
  • 双引号用于表名和列名(两件事)

根据规格,这不是100%正确,但这个助记符有助于我(人类)。

答案 5 :(得分:0)

区别在于它们的用法。单引号通常用于在WHERE,HAVING和一些内置SQL函数(例如CONCAT,STRPOS,POSITION等)中引用字符串。

如果您要使用别名之间有空格的别名,则可以使用双引号来引用该别名。

例如

(select account_id,count(*) "count of" from orders group by 1)sub 

这是来自一个具有account_id作为外键的订单表的子查询,我正在汇总这些查询以了解每个帐户下的订单数量。在这里,为了方便起见,我在任一栏中给了一个随机名称作为“ count of”。

现在让我们编写一个外部查询来显示“ count of”大于20的行。

select "count of" from 
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;

您也可以将相同的情况应用于通用表表达式。