ホームページ >バックエンド開発 >PHPチュートリアル >列が存在するにもかかわらず、Postgresql クエリで「列が存在しません」エラーが返されるのはなぜですか?
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 中国語 Web サイトの他の関連記事を参照してください。