雖然試圖做一個選擇查詢使用isnull其中,我已經嘗試在2個不同的服務器是相同的一個到另一個。 (他們都使用相同的程序,DLL,返回頁面,他們只是改變從一個IP到另一個)SQL isnull錯誤
SELECT * FROM
ITEM_TEST
WHERE ITEM_NAME = isnull(@ITEM_TESTE, ITEM_NAME)
的操作工作,而不在服務器中的一個問題,返回所有選項時@ITEM_TESTE是NULL,而在另一箇中,它只返回那些不是NULL的。 我正在使用名爲SQLdbx(版本3.14)的基於sybase的應用程序(版本12.5)
不是那麼公開地理解它,@ITEM_TESTE是從用戶給出的變量,它是可選的,這意味着它可以爲null ITEM_NAME接受STRING,ITEM_TEST也是一個包含10個以上變量的表,我正在簡化它。然而,此搜索要求所有可能的結果,即使ITEM_NAME未被使用,同時使用其他變量縮小搜索範圍也是如此。 (我想到了創建與排除ITEM_NAME的IF條件的搜索和它的工作,但它使搜索以「laggy」由於性能比較的問題。)
編輯
變化的變量的名稱使它不那麼容易混淆(同名),並添加了解釋以便於理解
另外,由於版權問題,我無法在此發佈確切的代碼。
我試過了,但結果是相同的isnull操作,它只返回非空變量,同時,當ITEM_TESTE =變量時,由於ITEM_TESTE = NULL,WHERE子句可以爲true並且我正在尋找NULL有效的可能性 – Gui 2015-03-02 20:09:04
@ user4624894。 。 。在數據庫中,幾乎所有與'NULL'的比較都不是真的,除了'null'。因此,重複一次,WHERE ITEM_TESTE = NULL將返回* nothing *,因爲與NULL的相等性從來就不是真的。 – 2015-03-02 20:14:35
當我寫到那裏時,我錯過了一件事... isnull函數不存在與相同的寫入來停止NULL返回?我的意思是 isnull(@ITEM_TESTE,ITEM_TESTE)會停止函數爲@ITEM_TESTE,以防他爲空,返回ITEM_TESTE,不是嗎? – Gui 2015-03-02 20:18:05