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中文網其他相關文章!