我想我在Oracle數據庫(10g)中遇到了PL/SQL中一個相當簡單的問題,我希望你們中的一個能夠幫助我。PL/SQL Oracle條件等於
我試圖儘可能地解釋這一點,但對我來說很難。 當我嘗試比較2個不同表的varchar2值以檢查是否需要創建新記錄,或者我可以重新使用現有ID的ID時,DB(或I)以錯誤的方式比較這些值。當兩個字段都包含一個值時,這一切都很好,這會導致它理解的'a'='a'。但是當兩個字段都是NULL(或者''哪個Oracle會變成NULL')時,它就不能比較這些字段。
我發現這個問題的'解決方案',但我確定有更好的方法。
rowTable1 ROWTABLE1%ROWTYPE;
iReUsableID INT;
SELECT * INTO rowTable1
FROM TABLE1
WHERE TABLE1ID = 'someID';
SELECT TABLE2ID INTO iReUsableID
FROM TABLE2
WHERE NVL(SOMEFIELDNAME,' ') = NVL(rowTable1.SOMEFIELDNAME,' ');
所以NVL改變null
值' '
後,它會以正確的方式進行比較。
由於提前,
丹尼斯
您需要括號:col1 = col2或(col1爲空,col2爲空) – Andrej
@Andrej。 。 。雖然括號是一個好主意,但它們不是*必需的*。 '和'具有比'或'更高的優先級。 –
我認爲你發佈的條件是最乾淨的。那謝謝啦! – Dennis