繁体   English   中英

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

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

我是 PostgresSQL 的新手。我试过了

select * from employee where employee_name="elina";

但结果错误如下:

ERROR: column "elina" does not exist.

然后我尝试用单引号替换双引号,如下所示:

select * from employee where employee_name='elina';

结果很好..那么 postgresql 中的单引号和双引号有什么区别。如果我们不能在 postgres 查询中使用双引号,那么在 postgreSQL 中这个双引号还有其他用途吗?

双引号用于表或字段的名称。 有时您可以省略它们。 单引号用于字符串常量。 这是 SQL 标准。 在详细形式中,您的查询如下所示:

select * from "employee" where "employee_name"='elina';

PostgreSQL 手册中所述

SQL 中的字符串常量是由单引号 ( ' ) 包围的任意字符序列,例如'This is a string' 要在字符串常量中包含单引号字符,请编写两个相邻的单引号,例如'Dianne''s horse' 请注意,这与双引号字符 ( " ) 不同。

同一页面的其他地方:

还有第二种标识符:分隔标识符或带引号的标识符 它是通过用双引号 ( " ) 将任意字符序列括起来而形成的。分隔标识符始终是标识符,而不是关键字。因此, "select"可用于引用名为“select”的列或表,而未加引号的select将被视为关键字,因此在需要表名或列名的地方使用时会引发解析错误。

TL;DR:字符串常量用单引号,表/列名用双引号。

单引号用于字符串文字,双引号用于转义数据库对象,如表名/列名等。

具体来说,双引号用于转义列/表名称,如果它类似于任何保留/关键字。 尽管每个 RDBMS 都有自己的转义方式(如MySQL中的反引号或SQL Server方括号),但使用双引号是 ANSI 标准。

暂无
暂无

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

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