【问题标题】:SQL Server: Cast bool as integerSQL Server:将布尔转换为整数
【发布时间】:2013-02-09 23:32:52
【问题描述】:

为什么要查询:

SELECT CAST((column LIKE '%string%') AS INT)+100

返回

关键字“AS”附近的语法不正确

【问题讨论】:

  • 你想达到什么目的?您可以在 WHERE 子句中使用该表达式,但不能在 CAST 中使用。
  • SQL Server 支持bit 数据类型。 (有效值为 0、1、'TRUE' 和 'FALSE'。)有一个 boolean 数据类型(具有 TRUE、FALSE 和 UNKNOWN 值),但您无法牢牢把握其中一个。

标签: sql-server integer boolean type-conversion


【解决方案1】:

因为 bool 不是 T-SQL 中的类型。它不存在。布尔表达式不是位类型。它们没有 类型——只有在特殊地方的语法允许时才允许使用它们。是的,这太糟糕了。

SELECT (case when (column LIKE '%string%') then 1 else 0 end)+100

【讨论】:

  • 对,复制粘贴错误。我希望这个想法能得到解决。如果你愿意,你仍然可以投射。它只是没有帮助。
【解决方案2】:

CAST 不计算表达式。无论如何,您如何将布尔结果转换为 Int?那永远行不通。 @usr 的答案是正确的方法。

【讨论】:

  • 为什么这不起作用?其他语言非常好,至少可以将演员视为可接受解决方案的语法糖。它只是不受支持,仅此而已。迟到的回复,我知道;只是解释我的反对票......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-14
  • 2013-12-03
  • 2014-09-03
  • 1970-01-01
  • 2011-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多