Oracle'da ayrılmış bir kelimeden nasıl kaçabilirim?


134

TSQL'de Select [table] from tablename"tablo" adlı bir sütun seçmek gibi bir şey kullanabilirim .

Bunu oracle'daki özel sözcükler için nasıl yaparım?

Düzenleme: Köşeli parantezleri, çift tırnakları, tek tırnakları ve ters tırnakları denedim, çalışmıyorlar ...

Daha fazla açıklama olarak, birinin yorum olarak adlandırdığı bir köşem var. Bu ayrılmış bir kelime olduğu için, kendisiyle birlikte seçim yapmaya çalışan bir yalpalıyor, sorguyu ayrıştırırken başarısız oluyor. Tablename'den "yorum" seçmeyi denedim ama işe yaramadı. Vakayı kontrol edip geri geleceğim.


Yanıtlar:


195

Hızlı bir aramadan, Oracle'ın çift tırnak ( "örneğin "table") kullandığı görülmektedir ve görünüşe göre doğru durumu gerektirmektedir — ilgilenen herkes için MySQL varsayılan olarak ters işaretler (`) kullanır, uyumluluk için çift tırnak kullanacak şekilde ayarlandığı durumlar dışında.


2
Seni işaretledim çünkü çift tırnak kullanarak kelimeden kaçmaya çalıştım ve işe yaramadı.
Spence

13
Varsayılan olarak Oracle, tüm tanımlayıcıları büyük harflerle yazacaktır. Bu nedenle, küçük harf karakterlerine veya özel karakterlere ihtiyacınız varsa veya tanımlayıcı, Oracle için ayrılmış bir sözcükse, çift tırnak içine alınması gerekir. Çift tırnak büyük / küçük harf kullanımını koruduğundan, tanımlayıcının da büyük / küçük harflerin doğru olması gerekir.
Metro

SQL Developer v4 kullanarak bir Oracle 11g Release 2 Express veritabanına ulaşan bir alan "takma adı" olan bir tablo oluşturdum. Takma ad yerine "ALIAS" yazdığımda seçimim işe yaradı.
Broken_Window

Tetikleyiciler için çalışmıyor, ORA-30507'yi ihlal eden bir ada sahip bir tablo için bir tetikleyici oluşturmaya çalışın (örn. DATABASE).
Fleuv

Tamamen büyük "TABLE" ile deneyin.
RSHAP

34

Oracle normalde SQL ifadelerindeki tanımlayıcıların adını sınırlamak için çift tırnak gerektirir, örn.

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

Bununla birlikte, nezaketle çift tırnakların çıkarılmasına izin verir, bu durumda tanımlayıcıyı sessizce büyük harfe dönüştürür:

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

dahili olarak aşağıdaki gibi bir şeye dönüştürülür:

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

8

Sütun adından biri olarak anahtar kelimeye sahip olduğumda oracle'da çift tırnak işe yaradı.

Örneğin:

select t."size" from table t 

3

Oracle çift tırnak kullanır, ancak büyük olasılıkla nesne adını büyük harfle yazmanız gerekir, örneğin "TABLO". Varsayılan olarak, çift tırnak işareti olmayan bir nesne oluşturursanız, örneğin

CREATE TABLE table AS ...

Oracle, nesneyi büyük harf olarak yaratacaktır . Ancak, çift tırnak kullanmadığınız sürece referans büyük / küçük harf duyarlı değildir!


-8

TABLEOracle tarafından rezerve edildiği için sütunu başka bir adla yeniden adlandırmanız gerekir .

Oracle'ın tüm ayrılmış kelimelerini oracle görünümünde görebilirsiniz V$RESERVED_WORDS.


Bir ORA-00942denediğimde alırım select * from V$RESERVED_WORDS.
2014
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.