【发布时间】:2020-09-16 14:24:06
【问题描述】:
我正在进行迁移,它使用 Crystal 中的一些报告元素并尝试将以前存在的内容转换为 SQL。它看起来使用 VB 脚本,但我不知道如何进行切换。
最初我认为CASE WHEN 语句就足够了,但我无法确定查询背后的正确逻辑。
下面的 VB 示例:
Dim HasValue As Boolean
If isnull({Reference.Shallow}) Then
HasValue=False
formula="MISSING"
Else
HasValue=True
End If
我知道 IF 确实存在于 SQL Server 中,但在研究它时,人们往往会偏离它,因为 CASE WHEN 也是如此?
我有一些我认为应该以相同的方式工作的假动作,但这并没有解决,因为您不能在 CASE WHEN 语句中设置变量(我相信):
DECLARE HasValue BIT
CASE WHEN Reference.Shallow IS NULL
THEN SET @HasValue = 1
ELSE SET @HasValue = 0
END AS Shallow
在 SQL 中最合适的方法是什么?
【问题讨论】:
-
在 SQL 中,
case是一个表达式,而不是一个逻辑流/分支结构。尝试使用set @HasValue = CASE ... END。 -
@Larnu 认为你误读了这个问题,我知道
IF存在于 SQL 中! -
我想念那句话,但不是问题,@ExitGame。
标签: sql sql-server tsql azure-sql-database