Bagaimana cara saya keluar dari kata yang disimpan di Oracle?


134

Di TSQL saya bisa menggunakan sesuatu seperti Select [table] from tablenamememilih kolom bernama "tabel".

Bagaimana saya melakukan ini untuk kata-kata yang dipesan di oracle?

Sunting: Saya sudah mencoba tanda kurung kurawal, tanda kutip ganda, tanda kutip tunggal, dan tanda kutip, mereka tidak berfungsi ...

Sebagai klarifikasi lebih lanjut, saya memiliki kolom yang seseorang beri komentar. Karena ini adalah kata yang dipesan, oracle mengeluarkan goyah yang mencoba memilihnya, gagal ketika mengurai kueri. Saya sudah mencoba Pilih "komentar" dari tablename tetapi tidak berhasil. Saya akan memeriksa kasing dan kembali.


Jawaban:


195

Dari pencarian cepat, Oracle tampaknya menggunakan tanda kutip ganda ( ", misalnya "table") dan tampaknya membutuhkan kasus yang benar — di mana, bagi siapa pun yang tertarik, MySQL default untuk menggunakan backticks (`) kecuali ketika diatur untuk menggunakan tanda kutip ganda untuk kompatibilitas.


2
Saya menandai Anda karena saya mencoba untuk melarikan diri dari kata menggunakan tanda kutip ganda dan tidak berhasil.
Spence

13
Secara default, Oracle akan menghapus semua pengidentifikasi. Jadi, jika Anda membutuhkan karakter huruf kecil atau karakter khusus, atau pengenalnya adalah kata yang dilindungi undang-undang Oracle, kata itu harus dilampirkan dalam tanda kutip ganda. Karena tanda kutip ganda mempertahankan kasus, pengenal juga harus menjadi kasus yang benar.
Metro

Saya membuat tabel dengan bidang "alias" menggunakan SQL Developer v4 yang memukul database Oracle 11g Release 2 Express. Pilih saya berfungsi ketika saya menulis "ALIAS" bukan alias.
Broken_Window

Tidak berfungsi untuk pemicu, coba buat pemicu untuk tabel dengan nama yang melanggar ORA-30507 (mis. DATABASE).
Fleuv

Cobalah di semua huruf besar "TABEL".
RSHAP

34

Oracle biasanya memerlukan tanda kutip ganda untuk membatasi nama pengidentifikasi dalam pernyataan SQL, misalnya

SELECT "MyColumn" AS "MyColAlias"
FROM "MyTable" "Alias"
WHERE "ThisCol" = 'That Value';

Namun, itu dengan anggun memungkinkan menghilangkan tanda kutip ganda, dalam hal ini ia secara diam-diam mengubah pengenal menjadi huruf besar:

SELECT MyColumn AS MyColAlias
FROM MyTable Alias
WHERE ThisCol = 'That Value';

dikonversi secara internal menjadi sesuatu seperti:

SELECT "ALIAS" . "MYCOLUMN" AS "MYCOLALIAS"
FROM "THEUSER" . "MYTABLE" "ALIAS"
WHERE "ALIAS" . "THISCOL" = 'That Value';

8

Kutipan ganda berfungsi di oracle ketika saya memiliki kata kunci sebagai salah satu nama kolom.

misalnya:

select t."size" from table t 

3

Oracle memang menggunakan tanda kutip ganda, tetapi Anda kemungkinan besar perlu menempatkan nama objek dalam huruf besar, misalnya "TABEL". Secara default, jika Anda membuat objek tanpa tanda kutip ganda, mis

CREATE TABLE table AS ...

Oracle akan membuat objek sebagai huruf besar . Namun, referensi tidak peka huruf besar-kecil kecuali Anda menggunakan tanda kutip ganda!


-8

Anda harus mengganti nama kolom menjadi nama lain karena TABLEdisediakan oleh Oracle.

Anda dapat melihat semua kata Oracle yang dilindungi undang-undang di tampilan oracle V$RESERVED_WORDS.


Saya dapatkan ORA-00942ketika saya mencoba select * from V$RESERVED_WORDS.
ceving
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.