Sql server SQL Server中的情况 SET@Result=@KriteriumTekst+ CASE@Operator 当“它”然后“ 当“不”时,则“ 当'EQ'然后'=' +@Verdi+ 提尔斯坦德酒店 当'OG'然后'AND' 当“埃勒”然后“或”

Sql server SQL Server中的情况 SET@Result=@KriteriumTekst+ CASE@Operator 当“它”然后“ 当“不”时,则“ 当'EQ'然后'=' +@Verdi+ 提尔斯坦德酒店 当'OG'然后'AND' 当“埃勒”然后“或”,sql-server,Sql Server,此语句未编译,可能是什么问题。您正在模拟案例表达式的结尾: SET @Result = @KriteriumTekst + CASE @Operator WHEN 'LT' THEN '<' WHEN 'GT' THEN '>' WHEN 'NE' THEN '<>' WHEN 'EQ' THE

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

您正在模拟
案例
表达式的
结尾

 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'
SET@Result=@KriteriumTekst+CASE@运算符,当'LT'时,然后''
当“不”时,则“
当'EQ'然后'='
结束
+@Verdi+CASE@Tilstand当'OG'然后'AND'
当“埃勒”然后“或”
结束

您需要终止案例陈述:

 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
SET@Result=@KriteriumTekst+CASE@运算符,当'LT'时,然后''
当“不”时,则“
当'EQ'然后'='
结束
+@Verdi+CASE@Tilstand当'OG'然后'AND'
当“埃勒”然后“或”
结束

每个
案例
都需要
结束
关键字():

declare@result-nvarchar(256)
声明@KriteriumTekst nvarchar(256)
声明@Operator nvarchar(256)
声明@Verdi nvarchar(256)
声明@Tilstand nvarchar(256)
设置@KriteriumTekst='Tekst'
set@Operator='LT'
设置@Verdi='Verdi'
设置@Tilstand='OG'
设置@Result=@KriteriumTekst+CASE@运算符时的“LT”然后“”
当“不”时,则“
当'EQ'然后'='结束时
+@Verdi+CASE@Tilstand当'OG'然后'AND'
当“ELLER”然后“ELLER”或“END”
选择@result

正如评论中所指出的,您的案例需要以
END

除此之外,如果
@Operator
为“LT”,而
@Tilstand
为“OG”,则结果如下

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

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

所有变量都被认为是正确声明的,不是吗?是的,它们被正确声明了你的意思是
1@ypercube:我的意思当然是
!是的,我担心的是这一条款缺乏空间和支离破碎的性质。除非我们看到如何使用
@Result
,否则我们无法真正判断问题将是什么。动态SQL有时可能是有保证的,但在这些条件字符串连接中很容易丢失。@谢谢,查询中缺少End。
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
@KriteriumTekst + '<' + @Verdi + 'OG'
@Result = '1<5OG'