首页 >数据库 >mysql教程 >为什么即使列存在,PostgreSQL 也会抛出'列不存在”错误?

为什么即使列存在,PostgreSQL 也会抛出'列不存在”错误?

Mary-Kate Olsen
Mary-Kate Olsen原创
2025-01-20 20:38:10778浏览

Why Does PostgreSQL Throw a

PostgreSQL 难以捉摸的“列不存在”错误:案例研究

Java 开发人员经常在 PostgreSQL 中遇到令人困惑的“列不存在”错误,即使列在数据库中明确定义也是如此。当构建直接从数据库获取列名的动态查询时,经常会发生这种情况。

让我们检查一个典型的情况:用户尝试从驻留在“network”架构中的“countries”表中的“Continent”列检索非空、非空值。 初始查询是:

<code class="language-sql">SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5</code>

执行此查询会产生令人沮丧的错误:

<code>org.postgresql.util.PSQLException: ERROR: column "continent" does not exist</code>

PostgreSQL 使用“countries.Continent”的建议具有误导性,因为该列在 pgAdmin 4 中的存在是不可否认的。

解决方案:双引号的重要性

问题源于列名周围缺少双引号。 在动态查询中,在列名周围使用双引号对于防止命名冲突至关重要。这迫使 PostgreSQL 将名称视为文字字符串,避免潜在的误解。

包含双引号的更正查询是:

<code class="language-sql">SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" <> ''
LIMIT 5</code>

此修改后的查询可以正确执行,返回预期结果 - 非空和非空“大陆”值。 请记住在动态 SQL 中始终使用双引号列名称以避免这种常见的陷阱。

以上是为什么即使列存在,PostgreSQL 也会抛出'列不存在”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn