【发布时间】:2019-08-13 08:00:24
【问题描述】:
让我们考虑以下 postgres 查询:
SELECT *
FROM "MY_TABLE"
WHERE "bool_var"=FALSE
AND "str_var"='something';
当我删除 "str_var" 周围的引号时查询无法正确响应,但当我在 "bool_var" 周围执行相同操作时却没有。为什么?在这种情况下编写查询的正确方法是什么,布尔列周围没有引号,文本列周围没有引号?还有什么?
【问题讨论】:
-
I can run your entire query with no double quotes anywhere。如果表名或列恰好与 Postgres 保留关键字一致,您通常只需要这些双引号。
-
那些不是“变量”,而是列名。
-
@TimBiegeleisen 它仅适用于您的示例,因为您创建的表没有双引号。由于 OP 的查询使用双引号,因此他的表名是大写的,因此如果不使用双引号,他的查询将失败。
-
@404 好直觉 +1。是的,区分大小写是使用双引号的另一个原因,没想到这一点。
标签: postgresql quoted-identifier