在 PostgreSQL 查询中转义列名中的字符?
Posted
技术标签:
【中文标题】在 PostgreSQL 查询中转义列名中的字符?【英文标题】:Escaping characters in column names in a PostgreSQL query? 【发布时间】:2015-10-25 00:00:09 【问题描述】:我有一个正在使用的查询,它在 mysql 中运行良好,但在 Postgres 上运行时出现问题。我收到一个语法错误,我确信有一个简单的解决方案,但在这里找不到任何关于它的信息。
很明显,问题与第一种情况下的数字 1 有关。
SELECT *,
(
(case when 1stFarmers > 0 THEN 1 ELSE 0 END) +
(case when OldMcDonald > 0 THEN 1 ELSE 0 END) +
(case when NewMcDonald > 0 THEN 1 ELSE 0 END)
) as num_fruits
FROM (SELECT
fruit, sum(farmers),
sum(case when farmer = '1stFarmers' then harvest_count else 0 end) AS 1stFarmers,
sum(case when farmer = 'OldMcDonald' then harvest_count else 0 end) AS Old_McDonald,
sum(case when farmer = 'NewMcDonald' then harvest_count else 0 end) AS New_McDonald
FROM fruits
GROUP BY
farmer) ft
我回来的错误:
syntax error at or near "stFarmers"
Position: 27
(
(case when 1stFarmers > 0 THEN 1 ELSE 0 END) +
^
(case when OldMcDonald > 0 THEN 1 ELSE 0 END) +
【问题讨论】:
【参考方案1】:使用双引号 "
转义包含数字的标识符(在您的情况下为列名):
(case when "1stFarmers" > 0 THEN 1 ELSE 0 END) +
【讨论】:
@icm:这是手册的相关链接:postgresql.org/docs/current/static/… 阅读它总是值得的,而不是盲目地尝试;)以上是关于在 PostgreSQL 查询中转义列名中的字符?的主要内容,如果未能解决你的问题,请参考以下文章