PostgreSQL 区分大小写和 SQL 查询错误:“列...不存在”
执行 SQL 连接有时会导致令人沮丧的“列 'column_name' 不存在”错误。 这通常是由于查询中的列名与数据库架构中定义的实际区分大小写的名称之间的大小写不匹配所致。 与其他一些数据库系统不同,PostgreSQL 对此特别敏感。
问题:
考虑这个失败的查询:
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on (FK_Numbers_id=num.id);</code>
错误消息指向main_sim
表中不存在的“FK_Numbers_id”列。
解决方案:
列确实存在,但正确的大小写至关重要。 PostgreSQL 区分大小写的特性需要精确匹配。更正后的查询是:
<code class="language-sql">select sim.id as idsim, num.id as idnum from main_sim sim left join main_number num on ("FK_Numbers_id" = num.id);</code>
为什么有效:
将列名 "FK_Numbers_id"
用双引号括起来会强制 PostgreSQL 按字面意思处理它,无论大小写。 如果没有引号,PostgreSQL 将根据其默认大小写规则解释列名,从而导致错误。 使用双引号可确保与数据库模式的定义完全匹配。
以上是为什么我的 SQL 查询由于区分大小写而失败并显示'列...不存在”?的详细内容。更多信息请关注PHP中文网其他相关文章!