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

时间:2016-12-30 12:21:39

标签: sql 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中使用这个双引号有什么其他用途吗?

3 个答案:

答案 0 :(得分:32)

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

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

答案 1 :(得分:25)

the PostgreSQL manual中所述:

  

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

其他地方on the same page

  

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

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

答案 2 :(得分:1)

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

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