SQL Server 2008 - 编辑表:位列需要“True”或“False”

时间:2008-12-04 16:22:20

标签: sql-server sql-server-2008 sql-server-2012

与观察不一样的问题......

我只是在我的开发机器上升级到SQL Server 2008,期望升级我的实时应用程序。我没有预料到任何问题,因为[我认为]我通常使用标准的T-SQL,并且可能与ANSI标准SQL不太相似。到目前为止一切都那么好,但我真的被一个非常简单的改变所抛弃:

我正在创建一个简单的小型查找表来存储代码列表,并包含一个位列来指示当前的默认代码。但是当我使用新的/修改过的'Edit Top 200 Rows'选项,并在位列中输入我的0和1时,我收到了一个错误:

  

'单元格的值无效 - 字符串是   未被识别为有效的布尔值'

经过一番搔痒之后,我尝试了正确和错误 - 他们工作了。

因此,这个新的编辑功能似乎需要输入4或5个字符,而不是之前的1个字符。

进一步检查,我们仍然可以使用“...where bitval = 1”,但现在也可以使用“...where bitval = 'true'”。但是返回的任何结果都会使这些位列仍为0或1。

这一切听起来都倒退了半步。不是世界末日,而是不必要的烦恼。

有人对此问题有任何见解吗?或者还有SQL Server 2008的其他新技术?

2012年更新: 刚刚安装了SQL Server 2012,我注意到这种行为已被“纠正” - 就像我之前一样,我现在可以使用“编辑前200行”选项将1/0而不是True / False直接输入到行中。这是一件小事,但我很高兴。

3 个答案:

答案 0 :(得分:3)

你总是可以使用'True'和'False'来比较BIT列...我认为这种改变是“强制”它是一个很好的一个很明显,该字段是一个BIT,并且不是INT。

就个人而言,我喜欢C#不支持“if(0)......”我想这只是为了清晰。

答案 1 :(得分:1)

刚刚找到这个(在准备其他东西之后){{3p>

答案 2 :(得分:1)

除非他们吹了它,只有一半强制执行规则尝试在更新语句中使用... = True,看看会发生什么。要么一直走,要么一点都不走。对不起微软,不能给你任何标记