我想知道是否有可能这样做(这并不管用):
select cast((exists(select * from theTable where column like 'theValue%') as bit)
似乎它应该是可行的,但很多事情,应该在SQL中工作不;)我已经看到了这种变通方法(SELECT 1,其中…Exists…),但似乎我应该能够仅仅将Exists函数的结果转换为位,并完成它。
我想知道是否有可能这样做(这并不管用):
select cast((exists(select * from theTable where column like 'theValue%') as bit)
似乎它应该是可行的,但很多事情,应该在SQL中工作不;)我已经看到了这种变通方法(SELECT 1,其中…Exists…),但似乎我应该能够仅仅将Exists函数的结果转换为位,并完成它。
当前回答
SELECT CAST(COUNT(*) AS bit) FROM MyTable WHERE theColumn like 'theValue%'
当你施放到位时
0 -> 0 其他的-> 1 和NULL -> NULL当然,但你不能得到NULL计数(*)没有一个GROUP BY
位直接映射到。net数据类型中的布尔值,即使它不是真的…
这看起来很相似,但如果没有匹配,就不给出行(不是零),所以它是不一样的
SELECT TOP 1 CAST(NumberKeyCOlumn AS bit) FROM MyTable WHERE theColumn like 'theValue%'
其他回答
不,这不可能。位数据类型不是布尔数据类型。整数数据类型,取值为0、1或NULL。
另一个解决方案是将ISNULL与SELECT TOP 1 1结合使用:
SELECT ISNULL((SELECT TOP 1 1 FROM theTable where theColumn like 'theValue%'), 0)
SELECT CAST(COUNT(*) AS bit) FROM MyTable WHERE theColumn like 'theValue%'
当你施放到位时
0 -> 0 其他的-> 1 和NULL -> NULL当然,但你不能得到NULL计数(*)没有一个GROUP BY
位直接映射到。net数据类型中的布尔值,即使它不是真的…
这看起来很相似,但如果没有匹配,就不给出行(不是零),所以它是不一样的
SELECT TOP 1 CAST(NumberKeyCOlumn AS bit) FROM MyTable WHERE theColumn like 'theValue%'
您还可以执行以下操作:
SELECT DISTINCT 1
FROM theTable
WHERE theColumn LIKE 'theValue%'
如果没有以“theValue”开头的值,将返回null(没有记录),而不是位0
SELECT IIF(EXISTS(SELECT * FROM theTable WHERE theColumn LIKE 'theValue%'), 1, 0)