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

Sql 关键字if附近的语法不正确,sql,sql-server,sql-server-2008,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

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
DECLARE@contracterm int
声明@FIELDSSingle varchar(最大值)
设置@ContractTerm=2
如果(@ContractTerm=2)开始+'这是一个样本'+结束+'',则设置@FIELDSSingle+='Year'+
选择@FIELDSSingle
当我运行关键字if时,我在关键字附近得到一个错误的语法。我想要在字符串中隐藏或显示基于条件的值的逻辑。有人能告诉我我做错了什么吗

这是你的电话号码


谢谢

如果
不是SQL Server中的表达式,则需要使用
大小写

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;
DECLARE@contracterm int
声明@FIELDSSingle varchar(最大值)
设置@ContractTerm=2
设置@FIELDSSingle+=“年”+
当@ContractTerm=2时,则“这是一个示例”否则“结束”
' ';
选择@FIELDSSingle;

如果
不是SQL Server中的表达式,则需要使用
大小写

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;
DECLARE@contracterm int
声明@FIELDSSingle varchar(最大值)
设置@ContractTerm=2
设置@FIELDSSingle+=“年”+
当@ContractTerm=2时,则“这是一个示例”否则“结束”
' ';
选择@FIELDSSingle;

您需要使用一个
大小写
表达式,它本质上是一个
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;
DECLARE@contracterm INT;
声明@FIELDSSingle VARCHAR(最大值);
设置@ContractTerm=2;
设置@FIELDSSingle+=“年份”+案例
当@ContractTerm=2时
然后“这是一个样本”
否则“
结束+'';
选择
@菲尔兹单;

是一个非常好的读物:)

您需要使用一个
大小写
表达式,它本质上是一个
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;
DECLARE@contracterm INT;
声明@FIELDSSingle VARCHAR(最大值);
设置@ContractTerm=2;
设置@FIELDSSingle+=“年份”+案例
当@ContractTerm=2时
然后“这是一个样本”
否则“
结束+'';
选择
@菲尔兹单;
是一本非常好的读物:)

(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
DECLARE@contracterm int
声明@Counter INT
声明@FIELDSSingle varchar(最大值)
设置@Counter=1
设置@ContractTerm=2
设置@FIELDSSingle='Year';
如果(@ContractTerm=2)
开始
设置@FIELDSSingle+=“这是一个样本”;
终止
设置@FIELDSSingle+='';
选择@FIELDSSingle
(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
DECLARE@contracterm int
声明@Counter INT
声明@FIELDSSingle varchar(最大值)
设置@Counter=1
设置@ContractTerm=2
设置@FIELDSSingle='Year';
如果(@ContractTerm=2)
开始
设置@FIELDSSingle+=“这是一个样本”;
终止
设置@FIELDSSingle+='';
选择@FIELDSSingle

CASE
不是t-sql中的语句,而是expression@Lamak从未真正考虑过这一点,修正了它
CASE
不是t-sql中的语句,而是expression@Lamak从来没有真正考虑过这一点,将其修改为迂腐,如果是一个表达,你就不能像OP那样使用它@如果Leonidas199x是一个陈述,而不是一个表达式,那么它就是一个迂腐的人。表达式返回单个值,其中语句是用于控制流的表达式、标识符和关键字等元素的集合。@SeanLange fair point,做得好。甚至用我自己的开场白来吸引我。Touché@Leonidas199x是的,我在回答中的表达方式太迂腐了。这并不意味着SQL中不存在
IF
Server@Lamak你把我弄丢了,老憨豆,这篇文章没有提到“如果”是一个表达?不管怎么说,这并不重要,我只是想指出IF在t-SQL中是有效的并且可以使用,只是不像你解释的那样,OP是如何使用它的。学究一点,IF是一个表达式,你不能像OP那样使用它@如果Leonidas199x是一个陈述,而不是一个表达式,那么它就是一个迂腐的人。表达式返回单个值,其中语句是用于控制流的表达式、标识符和关键字等元素的集合。@SeanLange fair point,做得好。甚至用我自己的开场白来吸引我。Touché@Leonidas199x是的,我在回答中的表达方式太迂腐了。这并不意味着SQL中不存在
IF
Server@Lamak你把我弄丢了,老憨豆,这篇文章没有提到“如果”是一个表达?不管怎样,这并不重要,我只是想指出IF在t-SQL中是有效的并且可以使用,而不是OP是如何使用它的,正如您所解释的。