我有以下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
由于
答案 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