Rumah > pangkalan data > tutorial mysql > Mengapa saya mendapat ralat ORA-00904: Pengecam Tidak Sah dalam pertanyaan penyertaan Oracle SQL saya?

Mengapa saya mendapat ralat ORA-00904: Pengecam Tidak Sah dalam pertanyaan penyertaan Oracle SQL saya?

Patricia Arquette
Lepaskan: 2025-01-17 08:36:11
asal
234 orang telah melayarinya

Why am I getting the ORA-00904: Invalid Identifier error in my Oracle SQL join query?

Menyelesaikan masalah ORA-00904: Pengecam Tidak Sah dalam Oracle SQL Joins

Artikel ini menangani ralat biasa "ORA-00904: pengecam tidak sah" yang dihadapi semasa melakukan gabungan dalam pertanyaan SQL Oracle. Mari kita periksa senario biasa dan penyelesaiannya.

Masalahnya:

Pertimbangkan pertanyaan penyertaan dalaman ini:

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>
Salin selepas log masuk
Salin selepas log masuk

Ini mungkin menghasilkan ralat:

<code>ORA-00904: "TEAM"."DEPARTMENT_CODE": invalid identifier</code>
Salin selepas log masuk

Punca Punca:

Isu ini selalunya berpunca daripada selongsong yang tidak konsisten dan penggunaan petikan berganda dalam nama jadual atau lajur. Tingkah laku sensitiviti huruf besar Oracle bergantung pada cara objek pangkalan data ditakrifkan.

  • Tidak Peka Huruf (tanpa petikan berganda): Jika anda mencipta jadual tanpa petikan berganda di sekeliling nama, Oracle biasanya mengabaikan huruf besar nama objek dan lajurnya.

  • Sensitif Huruf (dengan petikan berganda): Jika anda mencipta jadual dengan petikan berganda di sekeliling nama (cth., "MyTable"), Oracle menjadi sensitif huruf besar-besaran. Anda mesti menggunakan selongsong yang sama (termasuk petikan) apabila merujuk jadual dan lajurnya dalam pertanyaan anda.

Penyelesaian:

Untuk membetulkan ralat "ORA-00904", pastikan konsistensi dalam nama jadual dan lajur anda:

  1. Semak Penciptaan Jadual: Semak skrip SQL yang digunakan untuk mencipta jadual anda (PS_TBL_EMPLOYEE_DETAILS dan PS_TBL_DEPARTMENT_DETAILS). Perhatikan sama ada petikan berganda telah digunakan.

  2. Laraskan Pertanyaan: Jika jadual telah dibuat tanpa petikan berganda, pertanyaan harus berfungsi dengan betul seperti sedia ada (atau dengan pelarasan huruf kecil). Jika ia dicipta dengan petikan berganda, replika sarung dan petikan yang tepat dalam kenyataan SELECT dan JOIN anda.

  3. Pertanyaan Dibetulkan (tanpa petikan berganda dalam penciptaan jadual):

<code class="language-sql">SELECT Employee.EMPLID as EmpID, 
       Employee.FIRST_NAME AS Name,
       Team.DEPARTMENT_CODE AS TeamID, 
       Team.Department_Name AS teamname
FROM PS_TBL_EMPLOYEE_DETAILS Employee
INNER JOIN PS_TBL_DEPARTMENT_DETAILS Team 
ON Team.DEPARTMENT_CODE = Employee.DEPTID;</code>
Salin selepas log masuk
Salin selepas log masuk

Dengan mematuhi garis panduan ini dan meneliti definisi jadual anda dengan teliti, anda boleh menyelesaikan ralat "ORA-00904: pengecam tidak sah" dengan berkesan dalam pertanyaan penyertaan Oracle SQL anda.

Atas ialah kandungan terperinci Mengapa saya mendapat ralat ORA-00904: Pengecam Tidak Sah dalam pertanyaan penyertaan Oracle SQL saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan