虽然试图做一个选择查询使用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