2017-06-16 52 views
-2

我有一個查詢,我檢查了那裏COURSE_NUMBER子句中的字符串轉換一個未知的格式字符串的Oracle SQL

select * from CC cc inner join AB_COURSE_ENROLL ab on cc.DCID=ab.LOCAL_ID where cc.STUDENTID=34700 and cc.COURSE_NUMBER IN (TO_CHAR(FOD1050)); 

的問題是,如果我在單引號把FOD1050查詢作品,但在我的項目我不能將FOD1050放在單引號或雙引號中。是否有任何其他方式告訴編譯器傳入的值是字符串? 我正在使用Oracle

+1

如果FOD1050是一個字符串值,那麼你需要把它們放在單引號。我很困惑你爲什麼說「但在我的項目中,我不能用單引號或雙引號括起FOD1050」 - 爲什麼你不能?是否因爲您需要能夠將任何字符串值傳遞給查詢 - 即通過綁定變量?如果是這樣,那麼在(:course_number)中的'和cc.course_number'應該做到這一點。 – Boneist

+0

這就像〜([courses] DCID)這個和〜([courses] DCID)對應於FOD1050沒有引號,如果加引號'〜[[courses] DCID''表達式不會返回任何東西,也許它會出錯 –

+0

我不明白'〜([courses] DCID)'是什麼意思。這是一個價值嗎?一個參數?一個變量?一列?它不是一個有效的標識符名稱,所以如果你想把它作爲一個參考(例如變量/列/ etc),它需要用雙引號括起來。然而,你的問題並不清楚 - 你將會更好地更新你的問題(或者在這一點上,提出一個新問題)並提供更多的信息,比如表格結構,樣本輸入數據和期望值輸出。 – Boneist

回答

0

如果您需要一個硬編碼值,您可以將它構建爲單個字符的連接,由其ASCII碼標識。

例如:

SQL> select chr(70) || chr(79) || chr(68) || chr(49) || chr(48) || chr(53) || chr(48) as str 
    2 from dual; 

STR 
------- 
FOD1050 

要知道你所需要的代碼,DUMP可能是有用的:

SQL> select dump('FOD1050') from dual; 

DUMP('FOD1050') 
---------------------------------- 
Typ=96 Len=7: 70,79,68,49,48,53,48 
+0

嗨@Aleksej它不會是一個硬編碼值,值可以是任何東西 –

+0

那麼這個值從哪裏來?這是一個變量嗎? – Aleksej

+0

是的,它是一個變量來自另一個表 –