【问题标题】:How do I flip a bit in SQL Server?如何在 SQL Server 中稍微翻转一下?
【发布时间】:2019-07-12 03:38:14
【问题描述】:

我正在尝试在 SQL Server 中执行按位 NOT。我想做这样的事情:

update foo
set Sync = NOT @IsNew

注意:我开始写这篇文章并在完成之前找到了我自己问题的答案。我仍然想与社区分享,因为 MSDN 上缺少这段文档(直到我也将它添加到社区内容中)。

【问题讨论】:

标签: sql sql-server bit-manipulation


【解决方案1】:

是的,~ 运算符可以工作。

update foo
set Sync = ~@IsNew

【讨论】:

    【解决方案2】:

    按位非:~

    按位与:&

    按位或:|

    按位异或:^

    【讨论】:

      【解决方案3】:

      缺乏 MSDN? http://msdn.microsoft.com/en-us/library/ms173468(SQL.90).aspx

      ~:对整数值执行按位逻辑非运算。 ~ 按位运算符对表达式执行按位逻辑 NOT,依次取每个位。如果表达式的值为 0,则结​​果集中的位设置为 1;否则,结果中的位被清除为 0。换句话说,将 1 更改为 0,将 0 更改为 1。

      【讨论】:

      • 哦。我只是查看了按位运算符和〜一元运算符:)
      【解决方案4】:

      为了完整起见:

      SELECT b, 1 - b
      FROM
        (SELECT cast(1 AS BIT) AS b
         UNION ALL
         SELECT cast(0 AS BIT) AS b) sampletable
      

      【讨论】:

        【解决方案5】:

        ~ 运算符仅适用于 BIT,

        尝试: ~ CAST(@IsNew AS BIT)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-05-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-04-06
          • 1970-01-01
          • 2018-04-19
          相关资源
          最近更新 更多