所以我有这个屏幕,里面有很多作为标准部分的文本框。
例子 :
输入名字:_____
输入年龄:_____
输入高度:_____
Search !
所以,查询是这样的:
select * from....
where
...
and Name = isnull(@name,Name)
and Age= isnull(@Age,Age)
and Height= isnull(@Height,Height)
一切都好。
现在假设所有 3 个参数都是null
问题是(例如)在列 Name
包含的情况下null
。( db 列上没有值)
所以——它会产生这样的东西
and Name = isnull(@name,Name)
哪个翻译成
and Null = isnull(Null,Name)
哪个翻译成
and Null = Null
(因为列 [Name] 的值为“null”)
这就是爆炸的地方。(因为空!=空)
我不想使用该set ansi null
解决方案。
有没有其他优雅的解决方案?
编辑 :
嗯……我可以用这个
ISNULL(Name ,1) = ISNULL(@Name ,ISNULL(Name ,1))
但我不确定这是否是最好的解决方案......