ホームページ >データベース >mysql チュートリアル >大文字と小文字の区別が原因で SQL クエリが「列 ... が存在しません」で失敗するのはなぜですか?
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 中国語 Web サイトの他の関連記事を参照してください。