Rumah >pembangunan bahagian belakang >tutorial php >Mengapa Pertanyaan Postgresql Saya Mengembalikan Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Mengapa Pertanyaan Postgresql Saya Mengembalikan Ralat 'Lajur Tidak Wujud' Walaupun Lajur Wujud?

Patricia Arquette
Patricia Arquetteasal
2024-12-27 21:44:13792semak imbas

Why Does My Postgresql Query Return a

Memahami Ralat "Lajur Tidak Wujud" dalam Postgresql

Apabila cuba melaksanakan pertanyaan Postgresql yang kelihatan mudah, pengguna mungkin menghadapi ralat mendakwa bahawa lajur yang ditentukan tidak wujud. Ini boleh membingungkan, terutamanya apabila lajur yang dipersoalkan diketahui terdapat dalam pangkalan data.

Menyiasat Isu

Pertanyaan biasa yang mencetuskan ralat ini menyerupai berikut:

SELECT * 
FROM employee 
WHERE "lName" LIKE "Smith"

Walau bagaimanapun, mesej ralat menunjukkan bahawa lajur "Smith" tidak wujud, iaitu membingungkan kerana nama lajur sebenar ialah "lName".

Punca Ralat

Ralat berpunca daripada salah faham tentang cara Postgresql mentafsir petikan berganda ("") dalam pernyataan SQL. Dalam Postgresql, petikan berganda melampirkan pengecam yang disebut, yang merujuk kepada objek pangkalan data seperti nama jadual dan nama lajur. Walau bagaimanapun, dalam kes ini, petikan berganda di sekitar "Smith" sebaliknya mencipta pemalar rentetan.

Membetulkan Pertanyaan

Untuk membetulkan isu, pertanyaan harus diubah suai untuk memetik nama lajur "lName" dengan betul:

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith'

Di sini, petikan tunggal (') digunakan untuk sertakan nilai 'Smith', mencipta rentetan literal untuk perbandingan.

Pertimbangan Tambahan

Selain daripada memetik, satu lagi punca kekeliruan yang berpotensi ialah kad bebas yang hilang dalam LIKE perbandingan. Biasanya, operasi LIKE termasuk aksara kad bebas (%) untuk memadankan sebarang bilangan aksara. Dalam pertanyaan ini, mungkin lebih sesuai untuk digunakan:

SELECT * 
FROM employee 
WHERE "lName" LIKE 'Smith%'

Ini memastikan baris di mana nilai dalam lajur "lName" bermula dengan 'Smith' akan disertakan dalam set hasil.

Atas ialah kandungan terperinci Mengapa Pertanyaan Postgresql Saya Mengembalikan 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