关键字if附近的语法不正确

时间:2017-08-17 14:41:58

标签: sql sql-server sql-server-2008

我有以下SQL

DECLARE @ContractTerm int  
Declare @FIELDSSingle varchar(max)    
SET @ContractTerm = 2

SET @FIELDSSingle += '<td class="HeaderData"> Year ' +If(@ContractTerm = 2)Begin+' This is a sample '+ End + ' </td>'

select @FIELDSSingle

我收到错误关键字附近的语法不正确,如果我运行它。在字符串中我想要的是根据条件隐藏或显示值的逻辑。可以告诉我在这里做错了什么。

以下是SQL Fiddle

由于

3 个答案:

答案 0 :(得分:5)

IF不是SQL Server中的表达式,您需要使用CASE

DECLARE @ContractTerm int  
Declare @FIELDSSingle varchar(max)    
SET @ContractTerm = 2

SET @FIELDSSingle += '<td class="HeaderData"> Year ' +
                      CASE WHEN @ContractTerm = 2 THEN ' This is a sample ' ELSE '' End  + 
                      ' </td>';

select @FIELDSSingle;

答案 1 :(得分:1)

您需要使用基本为CASE

IF表达式
DECLARE @ContractTerm INT;
DECLARE @FIELDSSingle VARCHAR(MAX);
SET @ContractTerm = 2;
SET @FIELDSSingle+='<td class="HeaderData"> Year '+CASE
                                                       WHEN @ContractTerm = 2
                                                       THEN ' This is a sample '
                                                       ELSE ''
                                                   END+' </td>';
SELECT
    @FIELDSSingle;

Here非常好读:)

答案 2 :(得分:0)

(Lamak和dbajtr的答案很好,但为了变化,我正在写这个答案)你可以分解如下:

DECLARE @ContractTerm int
DECLARE @Counter INT
Declare @FIELDSSingle varchar(max)
SET @Counter = 1
SET @ContractTerm = 2

SET @FIELDSSingle = '<td class="HeaderData"> Year ';
If(@ContractTerm = 2)
Begin
    set @FIELDSSingle +=' This is a sample ';
End 
set @FIELDSSingle +='</td>';

select @FIELDSSingle