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

解决方案 »

  1.   

    就是指ISNULL(a.fheadselfs0241,0) 的结果是11414,9637,0三者之一
      

  2.   

    ISNULL(a.fheadselfs0241,0) --如果fheadselfs0241为NULL值,则返回0,否则返回fheadselfs0241
    IN (11414,9637,0) --以上返回值包含11414,9637,0这三个值的筛选出来.
      

  3.   

    ISNULL(a.fheadselfs0241,0) 如果空就用0代替
    IN (11414,9637,0) 是指如果包含在IN (11414,9637,0) 这几个里面
      

  4.   


    ISNULL(a.fheadselfs0241,0) -- 这就是值(a.fheadselfs0241为空时就是0)
    IN (11414,9637,0) --判断上面的值是否在里面
      

  5.   


    确定指定的值是否与子查询或列表中的值相匹配。 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 对返回值求反。
      

  6.   

    都是基本的邏輯關係式.ISNULL(a.fheadselfs0241,0) IN (11414,9637,0) 就是ISNULL(a.fheadselfs0241,0)的值在 in 後面的括弧內才返回真.
      

  7.   

    create table [tb]([col] int)
    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 行)
    **/
      

  8.   


    ISNULL(a.fheadselfs0241,0):如果a.fheadselfs0241不为空则返回a.fheadselfs0241,否则返回0
    ISNULL(a.fheadselfs0241,0) IN (11414,9637,0)  返回ISNULL(a.fheadselfs0241,0)的结果为11414,9637,0中任一个的值
      

  9.   

    ISNULL(a.fheadselfs0241,0) IN (11414,9637,0) ISNULL(a.fheadselfs0241,0) 如果是NULL 就是0, 取得的值在(11414,9637,0)  查找
      

  10.   

    在SQL SERVER 帮助文档中查找isnull(p1,p2)
    要懂得利用SQL帮助文档哦,3楼给出了正解了
      

  11.   

    ISNULL(a.fheadselfs0241,0) -- 这就是值(a.fheadselfs0241为空时就是0)
    IN (11414,9637,0) --判断上面的值是否在里面联机丛书
      

  12.   

    无论a.fheadselfs0241是否为NULL,都检测它是否在11414,9637,0这之中
      

  13.   

    ISNULL(a.fheadselfs0241,0) IN (11414,9637,0) 
    空不空都在那条件里
      

  14.   

    谢谢各位GGJJ的热心回答!已经理解了, :)