如何在 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 还是 true 或 1 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
数据类型,其中可能的值为0
或1
。
因此,要回答您的问题,您应该使用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 中设置布尔值的主要内容,如果未能解决你的问题,请参考以下文章