我有一个联合多个表的视图。一个表有一个名为VisibleToCustomer的位列。其中一个表没有这个,我想在视图中对其进行硬编码。我可以用字符串来做到这一点: -
SELECT 'Fred' "VisibleToCustomer", ....
甚至是ints
SELECT 1 "VisibleToCustomer", ....
但我该如何做呢?即我想做像
这样的事情SELECT true "VisibleToCustomer", ....
但显然上述情况并不奏效!
答案 0 :(得分:4)
您可以使用
SELECT 'true' AS "VisibleToCustomer"
比{var}有higher data type precedence所以这将正确投射。
SELECT CAST(1 AS BIT) AS "VisibleToCustomer"
UNION ALL
SELECT 'false'
返回
+-------------------+
| VisibleToCustomer |
+-------------------+
| 1 |
| 0 |
+-------------------+
答案 1 :(得分:3)
位文字的三个可能值:
select cast(1 as bit), cast(0 as bit), cast(null as bit)
注意:当转换为位1
时,任何非零值都将变为CAST(-1.2e-33 AS BIT)
。我建议不要那样写一些文字。