繁体   English   中英

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

[英]What is the difference between single and double quotes in SQL?

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

单引号用于在 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 ,您确实必须使用单引号,但建议不要将列别名设置为多个单词。

我们记住在这种情况下使用什么的简单规则:

  • [ S ] 单引号用于 [ S ] 字符串; [ D ] 双引号用于 [ D ] 数据库标识符;

在 MySQL 和 MariaDB 中, ` (反引号)符号与符号相同。当您的SQL_MODE启用了ANSI_QUOTES时,您可以使用

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

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

也可以看看:

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

SET GLOBAL SQL_MODE=ANSI_QUOTES

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

SET QUOTED_IDENTIFIER ON

在 ANSI SQL 中,双引号引用对象名称(例如表),允许它们包含不允许的字符,或者与保留字相同(避免这种情况,真的)。

单引号用于字符串。

然而,MySQL 不遵守标准(除非它的 SQL_MODE 被改变)并允许它们可互换地用于字符串。

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

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

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

我使用这个助记符:

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

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

不同之处在于它们的用法。 单引号主要用于在 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;

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

要记住的两件事:

Single Qutoes(') :字符串文本

select * from employees where room_name = 'RobinCapRed';

其中 RobinCapRed 是字符串文本

双引号("):列名表名

select "first_name" from "employees";

其中 first_Name 是员工表中列名

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM