gpt4 book ai didi

sql-server-2005 - 将 bool 逻辑语句的结果分配给 T-sql 中的位字段

转载 作者:行者123 更新时间:2023-12-04 06:27:22 25 4
gpt4 key购买 nike

根据 this question ,我无法将 bool 逻辑语句的结果分配到位字段中。我的问题是我正在处理一个创建脚本,并且我有一些需要 bool 语句才能完成的依赖标志。此脚本将作为所有空值开始,用户只需输入他们想要的数据。该脚本将检测该记录是否已存在。如果是这样,它将只更新不为空的参数。如果它不存在,脚本将创建一个新记录。我正在使用 sql server 2005。

我使用 ISNULL(@Setting1, 0) 找出了插入语句在未分配变量时设置默认值。我的问题来自一个特定的设置,它依赖于 2 个设置标志。如果我需要添加一个设置标志,我还希望看到一个可以支持另一个设置标志的解决方案。

DECLARE @Setting1 bit
DECLARE @Setting2 bit
DECLARE @Setting3 bit

--... code snipped for setting the value

UPDATE
MyTable
SET
EnableSetting1 = ISNULL(@Setting1, EnableSetting1),
EnableSetting1 = ISNULL(@Setting2, EnableSetting2),
EnableSetting1 = ISNULL(@Setting3, EnableSetting3),
EnableComplexSetting1 = ISNULL(@Setting1, EnableComplexSetting1),
EnableComplexSetting2 = ?
WHERE
Id = @MyId

逻辑上, ?看起来像 ISNULL(@Setting2, EnableSetting2) OR ISNULL(@Setting3, EnableSetting3)但这显然是不正确的。我应该如何设置复杂的设置 2?如果逻辑上是 ISNULL(@Setting2, EnableSetting2) OR ISNULL(@Setting3, EnableSetting3) OR ISNULL(@Setting4, EnableSetting4),我会怎么做? , 等等?

最佳答案

ISNULL不返回 bool 值 - 它只是确保使用提供的第二个值,如果第一个表达式为 NULL。

你需要使用这样的东西:

UPDATE
MyTable
SET
EnableSetting1 = CASE WHEN @Setting1 IS NULL THEN 1 ELSE 0 END,
...

如果 @Setting1,取决于您要存储的 bool 值真的是 NULL 你可能需要切换 THEN 中的两个值和 ELSE案例....

通过这种方法,您还应该能够检查两个条件:
UPDATE MyTable
SET EnableComplexSetting2 =
CASE WHEN (Complex1 IS NULL AND Complex2 IS NULL) THEN 1 ELSE 0 END

......

关于sql-server-2005 - 将 bool 逻辑语句的结果分配给 T-sql 中的位字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5884377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com