PostgreSQL 的“列不存在”错误:区分大小写问题
一个常见的 PostgreSQL 头痛是“列不存在”错误,即使列已明确定义。 这通常源于区分大小写的问题。考虑这个例子:
<code class="language-sql">SELECT Continent FROM network.countries WHERE Continent IS NOT NULL AND Continent <> '' LIMIT 5</code>
这个看似正确的查询可能会返回:
<code>ERROR: column "continent" does not exist Hint: Perhaps you meant to reference the column "countries.Continent". Position: 8</code>
解决方案:使用双引号精确列命名
修复方法很简单:将列名称用双引号引起来:
<code class="language-sql">SELECT "Continent" FROM network.countries WHERE "Continent" IS NOT NULL AND "Continent" <> '' LIMIT 5</code>
通过双引号 "Continent"
,您明确告诉 PostgreSQL 将名称视为区分大小写的文字字符串,以防止误解。
为什么双引号很重要
PostgreSQL 通常以不区分大小写的方式处理列名称。 但是,不带引号的列名通常会在内部转换为小写。 如果您的列名混合大小写(例如“Continent”),并且您引用它时不带引号,则 PostgreSQL 可能会搜索小写的“Continent”列,从而导致错误。 双引号确保精确匹配,解决歧义。
以上是为什么即使列存在,我的 PostgreSQL 查询也会抛出'列不存在”错误?的详细内容。更多信息请关注PHP中文网其他相关文章!