【问题标题】:How do you create a yes/no boolean field in SQL server?如何在 SQL Server 中创建是/否布尔字段?
【发布时间】:2010-12-19 03:13:39
【问题描述】:

access database 或一般情况下转换时创建yes/noBoolean 字段的最佳做法是什么?

【问题讨论】:

    标签: sql-server boolean sqldatatypes


    【解决方案1】:

    相当于BIT 字段。

    SQL 中,您使用01 设置位字段(就像Access 中的yes/no 字段一样)。在 Management Studio 中,它显示为 false/true 值(至少在最近的版本中)。

    当通过 ASP.NET 访问数据库时,它会将字段公开为布尔值。

    【讨论】:

    • 如果你在 Access 数据库中链接表,true 的值为 -1,false 的值为 0。至少在 Access 2003 中。(这是我方便的版本连接到客户的 MSSQL 数据库)。
    • 请注意,它并不完全等同。如果标量函数返回位,还需要测试是0还是1。例如dbo.IsReturnsBit(value) = 1
    • @D-Money:是的,但是如果你想在条件中使用值,你只需要进行比较。如果你使用结果中的值,那么你不应该做比较。
    • Re Mgt Studio,如果您要复制+粘贴数据,您还需要将其设置为 True / False,而不是 1 或 0。
    【解决方案2】:

    BIT 数据类型通常用于存储boolean 值(0 用于false1 用于true)。

    【讨论】:

    • SQL 标准中是否指定了BIT?我很难找到它。我能看到的最接近的是“布尔类型”。
    • 您是否担心位和布尔值的语义不同?
    【解决方案3】:

    您可以使用bit 列类型。

    【讨论】:

      【解决方案4】:

      您可以使用BIT 字段。

      要向现有表添加 BIT 列,SQL 命令如下所示:

      ALTER TABLE table_name ADD yes_no BIT

      如果你想创建一个新表,你可以这样做:CREATE TABLE table_name (yes_no BIT)

      【讨论】:

        【解决方案5】:

        可以使用数据类型bit

        大于 0 的插入值将存储为 '1'

        插入的小于 0 的值将存储为 '1'

        插入为“0”的值将存储为“0”

        这适用于 MS SQL Server 2012 Express

        【讨论】:

        • 你确定关于值小于 0 的陈述吗?
        • @BiLaL 这是大多数语言的常见行为。 0 为假,任何非0 的数字为真。 -1 作为 true 的默认值也很常见,因为在有符号二进制文件中,它的每个位都设置为 1。如今,将 1 作为 true 的默认值非常常见(仅设置了最低有效位)。跨度>
        【解决方案6】:

        已经有答案说使用 Bit。我将在这些答案中添加更多内容。

        您应该使用bit 来表示布尔值。

        来自 MSDN 文章的备注。

        Bit 可以取值 1、0 或 NULL。

        SQL Server 数据库引擎优化了位列的存储。如果 表中有 8 个或更少的位列,这些列存储为 1 个字节。如果有 9 到 16 位列,则这些列是 存储为 2 个字节,依此类推。

        字符串值 TRUE 和 FALSE 可以转换为位值:TRUE 转换为 1,FALSE 转换为 0。

        转换为位会将任何非零值提升为 1。

        Reference

        注意:最好只在数据类型为NOT NULL 时将值保留为 1 和 0

        因为 Bit 有值 1、0 和 NULL。参见真值表。因此,相应地计划价值。允许位数据类型为 NULL 值可能会增加混乱。

        Reference

        【讨论】:

        • Bit can take a value of 1, 0, or NULL. 如果位数据类型允许空值,我不必在字段定义中指定空值?这个定义让我觉得[field1] [bit] NULL[field1] [bit] 是等价的?
        【解决方案7】:

        创建表时的示例用法:

        [ColumnName]     BIT   NULL   DEFAULT 0
        

        【讨论】:

          【解决方案8】:

          您可以使用BIT 字段

          创建新表:

          CREATE TABLE Tb_Table1
          (
          ID              INT,
          BitColumn       BIT DEFAULT 1
          )
          

          在现有表中添加列:

          ALTER TABLE Tb_Table1 ADD BitColumn  BIT DEFAULT 1
          

          插入记录:

          INSERT Tb_Table1 VALUES(11,0)
          

          【讨论】:

            【解决方案9】:

            bit 是最简单的,占用的空间也最少。与“是/否”相比不是很冗长,但我很好。

            【讨论】:

            • 我认为这更好——无需担心 Y == y 和 N = n,纯真或假。意图是完全显而易见的,并且没有单字符字段邀请的“特殊”情况:)
            【解决方案10】:

            bit 是最合适的选项。否则我曾经为此使用int1true0false

            【讨论】:

            • 通常使用 0 表示 False,非 0 表示 True。
            • 有很多口味,或者说一个好的政治家可能是真的:D
            【解决方案11】:

            在任何版本的SQL Server Management Studio中,使用BIT作为数据类型

            这将为您提供TrueFalse 值选项。如果您只想使用10,则可以使用此方法:

            CREATE TABLE SampleBit(
                bar int NOT NULL CONSTRAINT CK_foo_bar CHECK (bar IN (-1, 0, 1))
            )
            

            但我会严格建议 BIT 作为 BEST 选项。完全希望它对某人有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2011-11-02
              • 2017-12-15
              • 2017-05-20
              • 1970-01-01
              • 2020-02-12
              • 2019-01-26
              相关资源
              最近更新 更多