在C中,当你将真/假值与1/0进行比较时,它的效果非常好。
我希望SQL Server具有类似的可能性 - 当我有bit
列时,我想比较myBitField = 'y'
/ myBitField = 'n'
我能做些什么吗?也许更改一些SQL解释器设置或什么?
示例我想做什么:
select * from
(
select CAST(1 AS BIT) as result
) as main
where main.result = 'y'
目前,它会抛出错误,我希望它返回1 / true /' y',无论如何,但我希望它能够进行比较。
答案 0 :(得分:1)
我想你想做一些是/否的事。但这通常是一个错误的概念,您访问SQL Server的应用程序应将y解释为1,将n解释为0,然后为查询设置正确的参数。你不应该(实际上我很想写“必须不”)在SQL Server中这样做,这就是你有一个业务逻辑。
答案 1 :(得分:1)
正如其他人所说,BIT和CHAR / VARCHAR是完全不同的数据类型。但是如果你想在select期间强制转换它们,你可以像这样使用CASE表达式:
-- Reading string as BIT
SELECT CAST(CASE RESULT WHEN 'Y' THEN 1 WHEN 'N' THEN 0 ELSE NULL END AS BIT) RESULT
-- Reading BIT as string
SELECT CAST(CASE RESULT WHEN 1 THEN 'Y' WHEN 0 THEN 'N' ELSE NULL END AS CHAR(1)) RESULT
就我所知,这就是你的选择就在这里。 :)