了解Postgresql 中的「列不存在」錯誤
在嘗試執行看似簡單的Postgresql 查詢時,使用者可能會遇到錯誤聲稱指定的列不存在。這可能會令人困惑,特別是當已知相關列存在於資料庫中時。
調查問題
觸發此錯誤的典型查詢類似於以下:
SELECT * FROM employee WHERE "lName" LIKE "Smith"
但是,錯誤訊息表明「Smith」欄位不存在,即令人費解,因為實際的列名是「lName」。
錯誤的根本原因
錯誤源自於對 Postgresql 如何解釋雙引號 ("") 的誤解在 SQL 語句中。在Postgresql中,雙引號括起帶引號的標識符,它引用資料庫對象,例如表名和列名。但是,在這種情況下,「Smith」周圍的雙引號會建立一個字串常數。
修正查詢
要修正此問題,應修改查詢以正確引用欄位名稱「lName」:
SELECT * FROM employee WHERE "lName" LIKE 'Smith'
這裡使用單引號( ')括起來值“Smith”,建立用於比較的字串文字。
其他注意事項
除了引用之外,另一個潛在的混亂來源是 LIKE 比較中缺少通配符。通常,LIKE 操作包含通配符 (%) 以符合任意數量的字元。在此查詢中,使用以下命令可能更合適:
SELECT * FROM employee WHERE "lName" LIKE 'Smith%'
這可確保「lName」列中的值以「Smith」開頭的行將包含在結果集中。
以上是為什麼即使列存在,我的 Postgresql 查詢也會回傳「列不存在」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!