access 中 "SELECT * FROM abcDB WHERE bh="&编号&"' and iif(len(ry)>0," ry='"&人员&"', 1=1)"sql中 "SELECT * FROM abcDB WHERE bh="&编号&"' and case when len(ry)>0 then ry='"&人员&"' else 1=1 end   "在access中 iif 判断后, 给出的是条件语句在sql中 对应的是什么函数 ? case when else end 好像只是给出结果值 ,不能是条件语句

解决方案 »

  1.   

    iif(这是条件,真就执行这里,假就执行这里)
      

  2.   

    iff在Access中正常的,但在SQL中无法得到正确值。
      

  3.   

    select 
        T1,
         T2,
    CASE
        WHEN 条件A THEN 结果A
        WHEN 条件B THEN 结果B
        WHEN 条件C THEN 结果C
        .
        .
        .
        .
    END AS 新的字段名
    from table T1
      

  4.   

    case when 1>2 then 'right' else 'left' end
    case enumvalue when 1 then 'right' 
                   when 2 then 'left'
                   else 'forward' end难道不能实现吗?
      

  5.   

    忘记了~
    CASE 
        WHEN 条件A THEN 结果A 
        WHEN 条件B THEN 结果B 
        WHEN 条件C THEN 结果C 
        . 
        . 
        . 
        . 
    else 其它
    END AS 新的字段名 
      

  6.   

    declare @SQL varchar(1000), @bh varchar(10), @ry varchar(10)
    set @bh='1022'
    set @ry='1001'
    set @sql='select * from abcdb where bh='''+@bh+''' and '+
          case when len(@ry)>0 then 'ry='''+@ry+'''' else '1=1' end
    exec(@sql)
      

  7.   

    重要的是在一条语句中实现
    上面语句 iif 实现的是条件判断和条件语句
    如果人员为空查询人员等于变量。否者就1=1
    case when ... 无法实现条件查询
      

  8.   

    我是用在ASP页面中的 SQL查询
      

  9.   

    如果是在ASP中,不是更好实现吗?
      

  10.   

    commandtext="select * from abcdb where bh='" & 人员 & "' and isnull(ry,'')=case when len(ry)>0 then '" & 人员 & "' else isnull(ry,'')" 
    速度可能慢一点
      

  11.   


    Access里的查询可以是 VBA 结合 JetSQL 一起使用.IIF本身就是VBA的函数,T-SQL跟它对应的也就是CASE WHEN了.转换的方法见6楼的。
      

  12.   

    测试后,没有错误,但结果不正确。引用 10 楼 zheninchangjiang 的回复
      

  13.   

    commandtext="select * from abcdb where bh='" & 编号 & "' and ((len(ry)>0 and ry='" & 人员 & "') or isnull(ry,'')='')"
    SQL中要注意NULL值,这个和access中可能会有很大的不同之处.