1

首先對於標題感到抱歉,我知道它並不清楚,但我找不到更好的一個!我有一份Crystal報告。此報告不使用命令(sql查詢)從oracle數據庫中獲取數據。以前的開發人員使用表之間的鏈接,以便動態生成查詢。當與字符串比較時,列中出現空值的行不會顯示

我用菜單「Show Sql Query」查看生成的sql查詢。我生成sql查詢的原因是因爲有些記錄沒有顯示在結果中,所以我想在SQL Developer中執行查詢,並且發現問題並相信我這是一個非常奇怪的問題。實際上,在WHERE子句中有這個過濾器(TableX.FieldY <>'blabla')。通常它應該包含那列中包含NULL的行,但事實並非如此!

在結果中,oracle不顯示在該列中具有空值的行!我相信null與'blablabla'不同,那麼爲什麼該列中具有null值的記錄不顯示?你可以幫我嗎?另外,即使解決方案要修改查詢中的某些內容,我也無法修改查詢,因爲它是由Crystal報表自動生成的。非常感謝你的寶貴幫助。

Walloud

回答

1

NULL不等於任何值。 NULL有自己的比較,IS NULL或IS NOT NULL:

TableX.FieldY <> 'blabla' 
OR TableX.FieldY IS NULL 
+1

應該先完成空檢查,否則檢查將失敗。所以,'isnull({table.field})或{table.field} <>'blablah'' – Ryan

+0

這是Crytal報告的語法問題?從SQL邏輯的角度來看,這應該不重要。 –

+0

是的,當CR遇到null時,它將停止評估語句。 – Ryan

相關問題