在下面的最后一个select
语句中,为什么在关闭ansi_nulls的情况下“ left(null,8)<>'anything'”不成立?
我试图找到一种方法来避免像这样的违反直觉的null比较结果,而不必在脚本中的任何地方使用isull()或Coalesce()。
set ansi_nulls off
select 'true' where null <> 'anything' ----> This returns 'true'
select 'true' where left(null,8) = null ----> This returns 'true'
select 'true' where left(null,8) <> 'anything' ----> **This returns nothing**
答案 0 :(得分:0)
无论ansi_nulls是打开还是关闭,始终使用 isnull
select 'true' where isnull( left(null ,8) , '') <> 'anything' ----> This returns 'true'
无论ansi_nulls是打开还是关闭,始终使用 isnull
select 'true' where isnull( left(null ,8) , '') <> 'anything' ----> This returns 'true'
修改
感谢 Gordon Linoff
然后使用 COALESCE 并且不要使用isull
select 'true' where COALESCE ( left(null ,8) , '') <> 'anything' ----> This returns 'true'