0

我是 t-sql 编程的新手。我有 Java、Javascript 和许多其他编程语言的背景。我正在尝试设置@notes变量的值。我的代码如下。

基本上,如果and不为空,我想要做的是设置@notes变量。我添加了一个打印语句以确保和是我传入的值。@minBatch@maxBatch@minBatch@maxBatch

简而言之,以下代码有什么问题?

    设置@notes =
          案子
            当 @minBatch != null 和 @maxBatch != null 然后
                案子
                  当@minBatch != @maxBatch 然后
                    '开始批处理:' + cast(@minBatch as varchar(8)) +' 结束批处理:' + cast(@maxBatch as varchar(8))
                  别的
                    '批处理' + cast(@minBatch as varchar(8))
                结尾
            别的
              空值
          结尾
4

1 回答 1

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 
于 2012-12-11T19:04:19.573 回答