在ORACLE中進(jìn)行關(guān)聯(lián)查詢時(shí),作為關(guān)聯(lián)查詢的兩字段數(shù)據(jù)類型要一至,否則會報(bào):
ORA-01722:invalid number
這樣的錯誤,如下查詢語句:
select * from A a,B b where a.loginid=b.userid;
如果a.loginid的數(shù)據(jù)類型為:number(n),而b.userid的數(shù)據(jù)類型為:varchar2(n),則會報(bào)上面的錯誤,要二者為同一數(shù)據(jù)類型,上面的查詢語句才能正確的被執(zhí)行,平時(shí)可能在做一些查詢統(tǒng)計(jì)時(shí)沒注意這些問題(可能表結(jié)構(gòu)是別人事先已經(jīng)建好了的,而我們只是去使用而于),所以當(dāng)我們在設(shè)計(jì)表結(jié)構(gòu)時(shí),如果以后某兩表(或多表)之間存在關(guān)聯(lián)關(guān)系,即查詢相關(guān)數(shù)據(jù)時(shí),要關(guān)聯(lián)它們之間的某些字段,這時(shí)我們就要注意了,要將到時(shí)可能用于關(guān)聯(lián)查詢的字段的數(shù)據(jù)類型設(shè)計(jì)為相同的類型,當(dāng)然字段長度可以不一樣,這樣到時(shí)關(guān)聯(lián)查詢時(shí)就不會有問題了,否則以后還要改字段數(shù)據(jù)類型,而且此時(shí)表中又有了數(shù)據(jù),為了防止數(shù)據(jù)丟失,改起來還有點(diǎn)麻煩.
這種問題在ORACLE關(guān)系數(shù)據(jù)庫中會出現(xiàn),在其它關(guān)系數(shù)據(jù)庫中不知道會不會出現(xiàn),猜測可能也會有類似問題.
注: 這可能是一個很簡單的問題,但這確可能是很容易忽視的問題,有時(shí)在設(shè)計(jì)表結(jié)構(gòu)時(shí),可能會由于考慮不周,造成以后要關(guān)聯(lián)查詢相關(guān)數(shù)據(jù)時(shí)出現(xiàn)上面的錯誤,從而要去改變表的字段類型,從而帶來一些不必要的麻煩.
posted on 2009-04-09 16:49
henry1451 閱讀(1636)
評論(2) 編輯 收藏