我这测试了一组非常有意思的东西 发现不少问题 类似BUG 贴出来大家讨论下~~首先:
SELECT A = ISNULL(NULLIF('',''),0) 大家觉得是什么结果? 测试出来是 *
汗啊~~NULLIF('','')执行出来应该是 NULL 那么A应该=0才对
然后:
SELECT A = ISNULL(ISNULL('',''),0) 大家觉得结果是什么? 测试出来是 白的
ISNULL('','') 测试出来是空白, 结果就是空白 能理解。。
但是有个问题。这个空白和NULL有什么区别?
再者:
SELECT A = ISNULL(NULLIF(''+' ',' '),0) 大家这次觉得答案是什么? 测试出来是 0
NULLIF(''+' ',' ') 这个结果竟然是NULL ,难道逗号左右时相等的么? 不解
最后:
SELECT A = ISNULL(NULLIF('',''),'kk') 测试出来 是 空白 而不是KK
太郁闷了。。难道ISNULL里面包含NULLIF就会出BUG么?大家快来帮我解答吧 我郁闷死了~
SELECT A = ISNULL(NULLIF('',''),0) 大家觉得是什么结果? 测试出来是 *
汗啊~~NULLIF('','')执行出来应该是 NULL 那么A应该=0才对
然后:
SELECT A = ISNULL(ISNULL('',''),0) 大家觉得结果是什么? 测试出来是 白的
ISNULL('','') 测试出来是空白, 结果就是空白 能理解。。
但是有个问题。这个空白和NULL有什么区别?
再者:
SELECT A = ISNULL(NULLIF(''+' ',' '),0) 大家这次觉得答案是什么? 测试出来是 0
NULLIF(''+' ',' ') 这个结果竟然是NULL ,难道逗号左右时相等的么? 不解
最后:
SELECT A = ISNULL(NULLIF('',''),'kk') 测试出来 是 空白 而不是KK
太郁闷了。。难道ISNULL里面包含NULLIF就会出BUG么?大家快来帮我解答吧 我郁闷死了~
SELECT A = ISNULL(NULLIF('',''),0)
A
----
0
(1 行受影响)2.
SELECT A = ISNULL(ISNULL('',''),0)
空白是空字符串,null是没值
SELECT A = ISNULL(NULLIF(''+' ',' '),0) ''+' '是' '=' '
=>NULLIF(''+' ',' ')=null
=> ISNULL(NULLIF(''+' ',' '),0)=0
SELECT A = ISNULL(NULLIF('',''),'kkkkkkkkkkkkkkkkkk') A
----
k
(1 行受影响)A的值本来应该是kk,但是它受NULLIF('','')中的''影响,只能一个字符。
NULLIF('','')=>A='k'
NULLIF(' ',' ')=>A='k'
NULLIF(' ',' ')=>A='kk'
NULLIF(' ',' ')=>A='kk'
SELECT A = ISNULL(convert(varchar, NULLIF('','')),0)
/*
A
------------------------------
0(所影响的行数为 1 行)
*/
/*
A
------------------------------
kk(所影响的行数为 1 行)
*/
SELECT A = ISNULL(NULLIF('',''),0) 结果是0
SELECT A = ISNULL(ISNULL('',''),0) 结果是空
SELECT A = ISNULL(NULLIF(''+' ',' '),0) 结果是0
SELECT A = ISNULL(NULLIF('',''),'kk') 结果是k