我主要是想编写一个函数能完成 if 布尔表达式?值1(为真时):值2(为假时)。就是三元运算符或者sql svr 中怎么能完成这个功能?

解决方案 »

  1.   

    bit
    整型数据 1、0 或 NULL。注释
    不能对 bit 类型的列使用索引。 Microsoft® SQL Server™ 优化用于 bit 列的存储。如果一个表中有不多于 8 个的 bit 列,这些列将作为一个字节存储。如果表中有 9 到 16 个 bit 列,这些列将作为两个字节存储。更多列的情况依此类推。
      

  2.   

    SQL SERVER没有所谓的布尔型,用bit来代替.
      

  3.   

    case when '列名'='你想要的值' then '结果' else '另一个结果' end
      

  4.   

    朋友,我知道能用bit类型来取代boollean类型。我的意思是说怎么完成我问的功能?也就是说怎么把一个布尔值传递给一个过程或者函数?如 (5>2)的值应该是true ,也就是1,怎么能把1这个值传递给函数或者存储过程呢?
      

  5.   

    可以自己写的:
    create function dbo.fu_bool(@b varchar(1))
    returns varchar(1)
    as
    begin
    declare @s varchar(1)
    if isnull(@b,'')='1'
    set @s='1'
    else
    set @s='2'
    return @send 
      

  6.   

    哦,这个意思啊,那还不简单.select case when 5 > 2 then 1 else 0 end
    /*
                
    ----------- 
    1(所影响的行数为 1 行)
    */select case when 5 > 2 then 'true' else 'false' end
    /*
          
    ----- 
    true(所影响的行数为 1 行)
    */
      

  7.   

    select dbo.f(col) from
    (
      select case when cola > colb then 1 else 0 end col from tb
    ) tselect dbo.f(col) from
    (
      select case when cola > colb then 'true' else 'false' end col from tb
    ) t
      

  8.   

    谢谢朋友,我今天试了一下,确实可以用case ...else...end来做,这一个比if (var1:var2,var3)功能更强大,谢谢了,你例我又学习了一招,case 不但能在语句中用,还能做函数。两次表示感谢!希望以后能多教我一些东西。
      

  9.   

    朋友,我在想能否把一个表达式(布尔表达式)当做参数传给一个函数,然后直接返回bit值,1为真,0为假?关于这点我在表达式中无含有变量时可以做到(其中含有引号时还没有完成,不过我已经想出方法),就是表达式中含有变量时不好办到。我才开始深入学习sql,还有很多东西不懂,希望以后多多指教。