若干个记录
EmpNo   Flag XX      1
 XX1     0
 xx2     1
 XX3     1
 XX4     0能不能用一个语句,把Flag=0记录变成1,把Flg=1的记录变成0 

解决方案 »

  1.   

    update tb set flag=abs(flag-1)
      

  2.   

    update tb
    set flag=(case when Flag=0 then 1 else then 0)
      

  3.   

    update tb
    set flag=abs(flag-1)
      

  4.   


    DECLARE @t TABLE
    (
    EmpNo VARCHAR(100),
    Flag VARCHAR(100)
    ) INSERT @t SELECT 'XX','1' 
    UNION ALL SELECT 'XX1',    '0' 
    UNION ALL SELECT 'xx2' ,   '1' 
    UNION ALL SELECT 'XX3',    '1' 
    UNION ALL SELECT 'XX4',    '0'SELECT * FROM @tUPDATE @t SET Flag= CASE Flag WHEN '1' THEN 0 WHEN '0' then '1' END  
    SELECT * FROM @tEmpNo                                                                                                Flag
    ---------------------------------------------------------------------------------------------------- ----------------------------------------------------------------------------------------------------
    XX                                                                                                   1
    XX1                                                                                                  0
    xx2                                                                                                  1
    XX3                                                                                                  1
    XX4                                                                                                  0
      

  5.   

    掉了个end
    update tb
    set flag=(case when Flag=0 then 1 else then 0 end)
      

  6.   

    update tb set flag=1-flag
      

  7.   

    我有一个笨方法,建议你先将 flag=1的update成2或者其他的。然后再将flag=0的update成1,然后再将flag=2的update成0.这样转换就可以了。
      

  8.   


    --flag是bit或是int型的用
    update tb set flag=abs(flag-1)
    --flag是字符型的用
    update tb set flag=(case when Flag=0 then 1 else then 0)
      

  9.   


    --flag是字符型的用
    update tb set flag=(case when Flag='0' then '1' else then '0' end)
      

  10.   

    declare @t table(i bit)
    insert @t select 1
    union all select 0
    union all select 0update @t set i=1-i --或 update @t set i=abs(i-1)select * from @t
    i    
    ---- 
    0
    1
    1(所影响的行数为 3 行)
      

  11.   

    若是bit,这样也行:
    update @t set i=i-1刚测的.
      

  12.   


    结贴吧!顶下Tony和树人