【问题标题】:Using comparison operators in SELECT clause of T-SQL query在 T-SQL 查询的 SELECT 子句中使用比较运算符
【发布时间】:2011-01-20 18:44:20
【问题描述】:

如何选择比较运算符的结果作为BIT类型的字段?

它在C# 中的工作原理:

bool isGreater = FieldA > FieldB;

它如何在T-SQL 中不起作用:

SELECT (FieldA > FieldB) AS BIT FROM t

如何正确编写这样的任务?

【问题讨论】:

    标签: sql sql-server sql-server-2008 tsql comparison-operators


    【解决方案1】:
    Select Convert(Bit, Case When FieldA > FieldB Then 1 Else 0 End) As YourBitColumn
    

    如果要返回 BIT,则需要转换(或强制转换)为位数据类型,否则 SQL 会将硬编码常量(1 或 0)解释为整数。

    【讨论】:

      【解决方案2】:

      你应该使用 CASE 子句:

      CASE
          WHEN FieldA > FieldB THEN 1
          ELSE 0
      END AS [BIT]
      

      【讨论】:

        【解决方案3】:

        您可以使用IIF 函数。例如:

        SELECT IIF(FieldA > FieldB, 1, 0) AS YourBitColumn FROM t
        

        IFF函数语法如下:

        IIF( boolean_expression, true_value, false_value )
        

        IFF返回,如果boolean_expression为真,则true_value,否则false_value

        有关IFF功能的更多信息:Logical Functions - IIF (Transact-SQL)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-07
          • 2015-08-02
          • 1970-01-01
          • 2019-11-06
          • 2011-02-14
          • 2021-06-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多