postgresqlの「列は存在しない」エラー:ケース感度の問題
列が明確に定義されている場合でも、一般的なpostgreSqlの頭痛は「列が存在しない」エラーです。 これは多くの場合、症例感度の問題に由来します。この例を考えてみましょう:
SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent ''
LIMIT 5
この一見正しいクエリが返される可能性があります:
ERROR: column "continent" does not exist
Hint: Perhaps you meant to reference the column "countries.Continent".
Position: 8
ソリューション:二重引用符付きの正確な列の名前
修正は単純です:列名を二重引用符で囲む:
SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" ''
LIMIT 5
double-quoting "Continent"
により、Postgresqlを明示的に指示して、名前をケースに敏感な文字通りの文字列として扱い、誤解を防ぎます。
なぜ二重引用問題
postgreSqlは通常、列名をケースに依存しない方法で処理します。 ただし、引用されていない列名は、多くの場合、内部で小文字に変換されます。 列名が混合ケース(「大陸」など)があり、引用なしでそれを参照する場合、PostgreSQLは小文字の「大陸」列を検索し、エラーにつながる可能性があります。 二重引用符は正確な一致を確保し、あいまいさを解決します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3