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

Cel*_*cca 38 sql postgresql

我是PostgresSQL的新手.我试过了

select * from employee where employee_name="elina";
Run Code Online (Sandbox Code Playgroud)

但结果错误如下:

ERROR: column "elina" does not exist.
Run Code Online (Sandbox Code Playgroud)

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

select * from employee where employee_name='elina';
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*has 42

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

select * from "employee" where "employee_name"='elina';
Run Code Online (Sandbox Code Playgroud)


mel*_*ene 28

正如PostgreSQL手册中所述:

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

同一页面的其他地方:

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

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