我是t-sql编程的新手。我有Java,Javascript和许多其他编程语言的背景。我试图设置@notes
变量的值。我的代码如下。
基本上,如果@notes
和@minBatch
不为空,我想要设置@maxBatch
变量。我添加了一个打印声明,以确保@minBatch
和@maxBatch
是我传入的值。
简而言之,以下代码有什么问题?
set @notes = case when @minBatch != null and @maxBatch != null then case when @minBatch != @maxBatch then 'Start batch: ' + cast(@minBatch as varchar(8)) + ' End batch: ' + cast(@maxBatch as varchar(8)) else 'Batch ' + cast(@minBatch as varchar(8)) end else null end
答案 0 :(得分:2)
使用is null
代替=null
SELECT @notes =
CASE
WHEN (@minBatch + @maxBatch) is not null --Comment: if any null result is null
THEN
CASE @minBatch WHEN @maxBatch --@min or @max still can be null
THEN 'Batch ' + cast(ISNULL(@minBatch,0) as varchar(8))
ELSE 'Start batch: ' +
cast(ISNULL(@minBatch,0) as varchar(8)) + ' End batch: ' +
cast(ISNULL(@maxBatch,0) as varchar(8))
END
ELSE null
END
使用(@minBatch + @maxBatch) is not null
简化编辑
--Comment: if any null result is null