【问题标题】:SQL Server 2008 - Editing Tables: Bit columns require 'True' or 'False'SQL Server 2008 - 编辑表:位列需要“真”或“假”
【发布时间】:2008-12-04 16:22:19
【问题描述】:

与其说是一个问题,不如说是一个观察......

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

我正在创建一个简单的小型查找表来存储代码列表,并包括一个位列来指示当前的默认代码。但是,当我使用新的/修改的“编辑前 200 行”选项,并在位列中输入我的 0 和 1 时,我得到了一个错误:

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

经过一番摸索后,我尝试了 True 和 False - 它们奏效了。

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

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

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

有人对这个问题有任何见解吗?或者 SQL Server 2008 还有其他新的陷阱吗?

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

【问题讨论】:

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


    【解决方案1】:

    您始终能够使用“真”和“假”来与 BIT 列进行比较...我认为这种“强制”更改是一个很好的做法,明确该字段是一个 BIT,并且不是 INT。

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

    【讨论】:

    • 如果真/假“更好”,为什么在其他地方使用 0/1?我从来没有遇到过记住字段是位还是 int 的问题。这是一个不存在恕我直言的问题的解决方案。至少他们可以选择一个设置?
    【解决方案2】:

    除了他们搞砸了,只执行了一半规则尝试在更新语句中使用 ...=True ,看看会发生什么。要么一路走,要么根本不走。抱歉,微软不能给你打分

    【讨论】:

      【解决方案3】:

      刚找到这个(在准备其他东西之后)Built in by design

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-04-07
        • 2012-08-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-19
        • 1970-01-01
        • 2014-04-21
        相关资源
        最近更新 更多