我需要在Oracle數據庫上寫一個查詢,其中一個字段的名稱爲ACCOUNT
。 ACCOUNT
在保留列表http://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm上,我的查詢失敗。在where子句中使用Oracle保留字或關鍵字
在此DB中,ACCOUNT
是VARCHAR2
,我不能更改它的名稱和結構,我只能運行SELECT
查詢。
雖然ACCOUNT
是一個VARCHAR2
,它總是包含一個整數,我想獲得一個值的範圍。
我認爲這會做的伎倆:
SELECT *
FROM TABLE
WHERE TO_NUMBER(ACCOUNT) > 1000
AND TO_NUMBER(ACCOUNT) < 2000
,但我只是得到一個ORA-01722無效號碼錯誤。
我已經檢查了ACCOUNT
只包含整數和運行這個查詢與非保留關鍵字正常工作......
可能的重複[如何轉義Oracle中的保留字?](http://stackoverflow.com/questions/1162381/how-do-i-escape-a-reserved-word-in-oracle) – Allan
我不明白這個問題,或者至少是接受的答案...帳戶是一個保留字,但是這並不能阻止它被用作非引用標識符。 [SQL Fiddle](http://sqlfiddle.com/#!4/f41dc/1),而且還在10gR2實例上進行了雙重檢查,因爲這是doc鏈接的用途。這與ORA-01722無關? –
另外有趣的是,'account'甚至不在[保留字列表]中(http://docs.oracle.com/cd/E18283_01/server.112/e17118/ap_keywd001。htm)in 11gR2;但它仍然在'v $ reserved_words';儘管11gR2和10gR2中所有的標誌都設置爲N,所以它並沒有真正保留。所以,這是一個沼氣標準的ORA-01722,爲什麼你不應該存儲數字作爲字符串問題。即使您已經檢查過,「帳戶」列中必須有一個非數字值。 –