2
 SET @Result = @KriteriumTekst + 
               CASE @Operator 
                  WHEN 'LT' THEN '<'
                  WHEN 'GT' THEN '>'
                  WHEN 'NE' THEN '<>'
                  WHEN 'EQ' THEN '='
               + @Verdi + 
               CASE @Tilstand 
                  WHEN 'OG' THEN 'AND'
                  WHEN 'ELLER' THEN 'OR'

该语句未编译,可能是什么问题。

4

4 回答 4

4

您正在混淆END表达式CASE

 SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<'
                                        WHEN 'GT' THEN '>'
                                        WHEN 'NE' THEN '<>'
                                        WHEN 'EQ' THEN '='
                              END

                    +@Verdi+ CASE @Tilstand WHEN 'OG' THEN 'AND'
                                            WHEN 'ELLER' THEN 'OR'
                             END
于 2012-08-09T07:46:59.817 回答
1

正如评论中指出的那样,您的案件需要终止END

除此之外,如果@Operator是“LT”并且@Tilstand是“OG”,你会得到一个看起来像的结果

@KriteriumTekst + '<' + @Verdi + 'OG'

给定值@KriteriumTekstand @Verdi,你可能会得到类似的东西

@Result = '1<5OG'

很难看出你想用那个字符串做什么。

于 2012-08-09T07:48:06.590 回答
0

您需要终止 case 语句:

SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<'
                                        WHEN 'GT' THEN '>'
                                        WHEN 'NE' THEN '<>'
                                        WHEN 'EQ' THEN '='
                                        END
                    +@Verdi+ CASE @Tilstand WHEN 'OG' THEN 'AND'
                                            WHEN 'ELLER' THEN 'OR'
                                            END
于 2012-08-09T07:47:02.357 回答
0

每个都CASE需要END关键字(MSDN 参考):

declare @result nvarchar(256)
declare @KriteriumTekst nvarchar(256)
declare @Operator nvarchar(256)
declare @Verdi nvarchar(256)
declare @Tilstand nvarchar(256)

set @KriteriumTekst = 'Tekst '
set @Operator = 'LT'
set @Verdi = 'Verdi '
set @Tilstand = 'OG'
 SET @Result= @KriteriumTekst+CASE @Operator WHEN 'LT' THEN '<'
                                        WHEN 'GT' THEN '>'
                                        WHEN 'NE' THEN '<>'
                                        WHEN 'EQ' THEN '=' END
                    +@Verdi+ CASE @Tilstand WHEN 'OG' THEN 'AND'
                                            WHEN 'ELLER' THEN 'OR' END
select @result
于 2012-08-09T07:47:50.660 回答