簡體   English   中英

關鍵字附近的語法錯誤,如果

[英]Incorrect syntax near the keyword if

我有以下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小提琴

謝謝

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;

您需要使用一個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;

是一個很好的閱讀:)

(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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM