让我们说我想做一些简单的检查,并使用SQL将答案转换为一点(布尔值)。举个例子,我想通过检查车轮的数量来检查是否有车。我能做到这一点:
CASE
WHEN NumberOfWheels > 2 THEN 1
ELSE 0
END AS 'IsCar'
但这只给了我正确的值,而不是nessesarilly正确的数据类型。所以我也会添加一个CAST <value> AS BIT
。
CAST(
(CASE
WHEN NumberOfWheels > 2 THEN 1
ELSE 0
END)
AS BIT) 'IsCar'
现在这需要两个操作(CAST
和CASE
)而不是一个操作。它的可读性稍差。是否可以以更简单的方式生成语句,最好不使用CASE
。我想要这样的东西(这不起作用):
CAST(NumberOfWheels > 2 AS BIT)
这甚至可以远程实现吗?
答案 0 :(得分:4)
不,这是不可能的。 T-SQL既没有布尔类型也没有类型BIT
文字,所以你可以采用任何方式对转换进行切片。您仍然可以使用IIF
而不是CASE
来减少措辞,并且(在我看来)CONVERT
比CAST
更容易阅读,但是并没有改变基本面:
SELECT IsCar = CONVERT(BIT, IIF(NumberOfWheels > 2, 1, 0))