ISNULL(a.fheadselfs0241,0) IN (11414,9637,0)
这个语句该如何解释?ISNULL(a.fheadselfs0241,0)我知道是什么意思,但加了后面的IN (11414,9637,0)就不知道该如何理解了,新手第一次在CSDN提问,希望各位大虾不吝赐教,小弟先谢过!
完整的代码如下: 方便的话顺便也帮我看一下是什么WHERE后面的条件是什么意思,因为里面的OR和AND实在太多了,我看得都晕了,感激涕零。SELECT a.fempid,a.fbillno,fheadselfs0238,fheadselfs0246,fheadselfs0242,b.fitemid,b.funitid,b.fqty,b.famount,a.fbillerid,b.fstockid FROM seoutstock a join seoutstockentry b on a.finterid=b.finterid
WHERE a.fdate between @begdate and @enddate
and fheadselfS0245=40261
and (isnull(a.fheadselfs0241,0) in (11414,9637,0) or a.fempid not in (7481,6709,10460) and a.fheadselfs0241 in (9704,9635))
and a.ftrantype=83 AND a.fstatus!=0
这个语句该如何解释?ISNULL(a.fheadselfs0241,0)我知道是什么意思,但加了后面的IN (11414,9637,0)就不知道该如何理解了,新手第一次在CSDN提问,希望各位大虾不吝赐教,小弟先谢过!
完整的代码如下: 方便的话顺便也帮我看一下是什么WHERE后面的条件是什么意思,因为里面的OR和AND实在太多了,我看得都晕了,感激涕零。SELECT a.fempid,a.fbillno,fheadselfs0238,fheadselfs0246,fheadselfs0242,b.fitemid,b.funitid,b.fqty,b.famount,a.fbillerid,b.fstockid FROM seoutstock a join seoutstockentry b on a.finterid=b.finterid
WHERE a.fdate between @begdate and @enddate
and fheadselfS0245=40261
and (isnull(a.fheadselfs0241,0) in (11414,9637,0) or a.fempid not in (7481,6709,10460) and a.fheadselfs0241 in (9704,9635))
and a.ftrantype=83 AND a.fstatus!=0
IN (11414,9637,0) --以上返回值包含11414,9637,0这三个值的筛选出来.
IN (11414,9637,0) 是指如果包含在IN (11414,9637,0) 这几个里面
ISNULL(a.fheadselfs0241,0) -- 这就是值(a.fheadselfs0241为空时就是0)
IN (11414,9637,0) --判断上面的值是否在里面
确定指定的值是否与子查询或列表中的值相匹配。 Transact-SQL 语法约定语法
test_expression [ NOT ] IN
( subquery | expression [ ,...n ]
)
参数
test_expression 任何有效的表达式。subquery 包含某列结果集的子查询。该列必须与 test_expression 具有相同的数据类型。expression[ ,... n ] 一个表达式列表,用来测试是否匹配。所有的表达式必须与 test_expression 具有相同的类型。结果类型
Boolean结果值
如果 test_expression 的值与 subquery 所返回的任何值相等,或与逗号分隔的列表中的任何 expression 相等,则结果值为 TRUE;否则,结果值为 FALSE。使用 NOT IN 对返回值求反。
insert [tb]
select 11414 union all
select 9637 union all
select null
select * from [tb] where ISNULL(col,0) IN (11414,9637,0)
/**
col
-----------
11414
9637
NULL(所影响的行数为 3 行)
**/
select * from [tb] where col IN (11414,9637,0)
/**
col
-----------
11414
9637(所影响的行数为 2 行)
**/
ISNULL(a.fheadselfs0241,0):如果a.fheadselfs0241不为空则返回a.fheadselfs0241,否则返回0
ISNULL(a.fheadselfs0241,0) IN (11414,9637,0) 返回ISNULL(a.fheadselfs0241,0)的结果为11414,9637,0中任一个的值
要懂得利用SQL帮助文档哦,3楼给出了正解了
IN (11414,9637,0) --判断上面的值是否在里面联机丛书
空不空都在那条件里