Rumah >pangkalan data >tutorial mysql >Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-20 20:38:10730semak imbas

Why Does PostgreSQL Throw a

Ralat "Lajur Tidak Wujud" PostgreSQL: Kajian Kes

Pembangun Java kerap menghadapi ralat "lajur tidak wujud" yang membingungkan dalam PostgreSQL, walaupun dengan lajur ditakrifkan dengan jelas dalam pangkalan data. Ini sering berlaku apabila membina pertanyaan dinamik yang mengambil nama lajur terus daripada pangkalan data.

Mari kita periksa situasi biasa: Seorang pengguna cuba mendapatkan semula nilai bukan nol dan tidak kosong daripada lajur "Benua" dalam jadual "negara" yang berada dalam skema "rangkaian". Pertanyaan awal ialah:

<code class="language-sql">SELECT Continent
FROM network.countries
WHERE Continent IS NOT NULL
AND Continent <> ''
LIMIT 5</code>

Melaksanakan pertanyaan ini menghasilkan ralat yang mengecewakan:

<code>org.postgresql.util.PSQLException: ERROR: column "continent" does not exist</code>

Cadangan PostgreSQL untuk menggunakan "countries.Continent" adalah mengelirukan, kerana kehadiran lajur dalam pgAdmin 4 tidak dapat dinafikan.

Penyelesaian: Kepentingan Petikan Berganda

Masalahnya berpunca daripada kekurangan petikan berganda di sekitar nama lajur. Dalam pertanyaan dinamik, menggunakan petikan berganda di sekitar nama lajur adalah penting untuk mengelakkan konflik penamaan. Ini memaksa PostgreSQL untuk menganggap nama sebagai rentetan literal, mengelakkan kemungkinan salah tafsir.

Pertanyaan yang diperbetulkan, yang menggabungkan petikan berganda, ialah:

<code class="language-sql">SELECT "Continent"
FROM network.countries
WHERE "Continent" IS NOT NULL
AND "Continent" <> ''
LIMIT 5</code>

Pertanyaan yang disemak ini dilaksanakan dengan betul, mengembalikan hasil yang dijangkakan—nilai "Benua" bukan nol dan tidak kosong. Ingatlah untuk mengutip dua kali nama lajur secara konsisten dalam SQL dinamik untuk mengelakkan perangkap biasa ini.

Atas ialah kandungan terperinci Mengapa PostgreSQL Membuang Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn