SQL Server:解释' y'作为BIT值

时间:2014-07-30 11:57:44

标签: sql sql-server ssms

在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',无论如何,但我希望它能够进行比较。

2 个答案:

答案 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

就我所知,这就是你的选择就在这里。 :)