SQL Server:将布尔型转换为整型

5
为什么这个查询语句:
SELECT CAST((column LIKE '%string%') AS INT)+100

返回

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


2
你想要实现什么目标?你可以在WHERE子句中使用该表达式,但不能在CAST中使用。 - Tim Schmelter
SQL Server支持bit数据类型。(有效值为0、1、'TRUE'和'FALSE'。)有一个boolean数据类型(具有TRUE、FALSE和UNKNOWN值),但您无法牢牢掌握它。 - HABO
2个回答

8

因为在 T-SQL 中,bool 不是一种类型。它不存在。布尔表达式不属于 bit 类型。它们没有一个类型 - 只有在语法中的特殊位置允许时才允许使用。是的,这很糟糕。

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

对,复制粘贴错误。我希望思路已经传达出去了。如果你想的话,仍然可以进行类型转换,但这并没有什么帮助。 - usr

0

CAST 不会评估表达式。而且,你怎么可能将布尔结果转换为整数?这永远不可能起作用。@usr的答案是正确的方法。


为什么这样做不可以?其他语言对此都相当正常,至少强制类型转换可以被视为一种被接受的解决方案的语法糖。但它就是不被支持,就是这样。我晚回复了,只是在解释我给负投票的原因... - Aconcagua

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接