sql - 在 PostgreSQL 中使用 SQL 保留关键字作为列名过滤列

标签 sql postgresql reserved-words

我的同事上传了一组数据,我必须按日期筛选数据。不幸的是,我的同事使用了年份和月份的保留字来上传数据,所以数据库中的数据如下所示:

babyname     year  month  gender
-----------  ----  -----  ------
Sarah        2018  2      f
Jack         2016  5      m
James        2017  7      m
Susan        2017  1      f

我要过滤 2017 年 4 月或之后出生的女婴名字。我写了以下查询,但它根本没有按日期过滤数据:

SELECT * FROM babytable
WHERE
gender='f' 
AND
(("year"=2017 AND "month">3) OR "year"=2018);

你能告诉我我的错误是什么吗? 非常感谢

最佳答案

无需将列名转换为字符串,您的 WHERE gender = 'f' 条件具有正确的格式。尝试:

SELECT * FROM babytable
WHERE
gender='f' 
AND
((year=2017 AND month>3) OR year=2018);

关于sql - 在 PostgreSQL 中使用 SQL 保留关键字作为列名过滤列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52370009/

相关文章:

Postgresql:将日期字符串 '2016-01-01 00:00:00' 转换为具有特定时区的日期时间

python - 是否可以在 Python 中重新定义关键字?

sql - Oracle 12c - 我们可以在将数据插入表而不是整个表时锁定分区吗?

sql - 如何将 TSQL 聚合函数转换为 Postgresql

sql - 在SQL Server存储过程中处理重复方案

postgresql - 使用 Wallaby/Phoenix 在测试环境中创建的新用户的 ID 不断增加

mysql - 由于在 MySQL 中使用保留字作为表名或列名而导致的语法错误

delphi - 如何转义 Delphi 中的保留字?

mysql - 当MySQL中的游标结果为列表形式时,如何访问它

mysql - Join WithWhere 子句 - 嵌套连接/Where?