如何在 SQL 中设置布尔值

Posted

技术标签:

【中文标题】如何在 SQL 中设置布尔值【英文标题】:How to set bool value in SQL 【发布时间】:2017-06-01 09:27:14 【问题描述】:

我有一列是布尔值。如何为此设置真假值?这是我的查询:

Update [mydb].[dbo].[myTable]
SET isTrue =
(
CASE WHEN Name = 'Jason' THEN 1
END
)

我不知道在 THEN 关键字后面写什么。我应该写 1 还是 true1 AS BIT 还是别的什么?

【问题讨论】:

它应该会出错吗? 查询正确,CASE WHEN Name = 'Jason' THEN 1 ELSE 0 END Is there a Boolean data type in Microsoft SQL Server like there is in mysql?的可能重复 使用 bit 类型 1 = true 和 0 = false。您不需要投射,但目前您会将“错误结果”保留为 NULL。所以将ELSE 0 添加到您的CASE 语句中。 【参考方案1】:

Sql server 不公开可用于查询的boolean 数据类型。 相反,它具有bit 数据类型,其中可能的值为01。 因此,要回答您的问题,您应该使用1 表示true 值,0 表示false 值,或使用null 表示未知值。

Update [mydb].[dbo].[myTable]
SET isTrue =
CASE WHEN Name = 'Jason' THEN 
    1
ELSE 
    0
END

【讨论】:

【参考方案2】:

您添加的查询可以正常工作,但您还必须注意“FALSE”部分,否则它将尝试在您的列中输入 NULL。 您对 isTrue 列有任何默认值约束吗?

Update [mydb].[dbo].[myTable]
SET isTrue =
(
   CASE WHEN Name = 'Jason' THEN 1 ELSE 0
END
)

【讨论】:

【参考方案3】:

如果不满足任何条件,则需要带有 when 和 else 的 case 语句

Update [mydb].[dbo].[myTable]
SET isTrue = ( CASE WHEN Name = 'Jason' 
                   THEN 1 else 0 
               END)

【讨论】:

【参考方案4】:

使用sql server的IIF函数

DECLARE @a int = 45, @b int = 40;  
DECLARE @a int = 45, @b int = 40;  
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result; 

Result  
--------  
TRUE  

(1 row(s) affected)

解决您的问题

Update [mydb].[dbo].[myTable]
SET isTrue = ( Name = 'Jason', 'TRUE', 'FALSE' )


【讨论】:

以上是关于如何在 SQL 中设置布尔值的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一个应用程序域中设置静态布尔值?

如何在 AngularJS 指令范围中设置默认值?

如何在目标 C 类中设置布尔类型属性

如何在 sql server 中设置外键列的默认值?

如何在 typeorm 和 nest.js 中设置布尔验证

如何在程序中设置适当的布尔条件