關於字符串轉換的

這個是類型轉換問題:

select * from A,B where A.CourseNum=B.billon;
其中CourseNum爲number類型,billion爲varchar2類型。

假如b.billion全部都是可以轉爲number的就沒有問題。


--疑問:

DML語句的處理過程:

1、創建遊標

2、分析語句,語法分析

(1)翻譯SQL語句,驗證它是否是合法的語句,即書寫的正確

(2)實現數據字典的查找,以驗證是否符合表和列的定義。

......

......

在2、(2)中,不對錶A.CourseNum=B.billon的列類型進行驗證嗎?

或者說 這是屬於數據轉換的範圍,只有在執行階段才識別的?



select * from A,B where A.CourseNum=字符串,字符串能夠轉爲數字的,就沒有問題。

select * from A,B where B.billon=數字,則如果B.billon存的都是可以轉爲數字的,則沒問題。但是如果B.billon存的有一個是不可以轉爲數字的,則有報ORA-01722: 無效數字異常。


數據轉換或者鍵值約束、死鎖等,是在執行階段才確定的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章