在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
,但不建议使用多个单词作为列别名。
我们需要记住用什么引号来表示哪种情况:
示例:
INSERT INTO "USERS" ("LOGIN", "PASSWORD", "DT_BIRTH") VALUES ('EDUARDO', '12345678', '1980-09-06');
在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%正确的,但是这个助记法对我(人类)很有帮助。
两件事需要记住:
单引号('):字符串或文本
select * from employees where room_name = 'RobinCapRed';
RobinCapRed是一个字符串或文本。
双引号("):列名或表名
select "first_name" from "employees";
其中 first_Name 是 员工表 中的一个列名
区别在于它们的用法。单引号主要用于WHERE、HAVING以及一些内置SQL函数(如CONCAT、STRPOS、POSITION)中引用字符串。
当您想要使用带有空格的别名时,可以使用双引号来引用该别名。
例如
(select account_id,count(*) "count of" from orders group by 1)sub
select "count of" from
(select account_id,count(*) "count of" from orders group by 1)sub where "count of" >20;