簡體   English   中英

SQL:IF ELSE與SELECT CASE的THEN

[英]SQL : IF ELSE with THEN of SELECT CASE

如果這個重復的問題很抱歉。 請讓我知道在哪里可以找到正確的問題。 我有一個存儲過程,可以在其中進行一些小的修改,而不能更改/更新Student表中的數據。 我們有這個問題,我需要解決。

在下面的語句中,有時student.FullName中將包含[NEXTLINE],然后我需要將其替換為''(空字符串),否則將不返回任何內容。 我嘗試了各種方法,但是在替換THEN子句中的+ student.FullName時出錯。 請讓我知道我該怎么做。

CASE
 WHEN student.ID IS NULL THEN 
 CASE 
    WHEN student.Status = 0 THEN '<BOLDSTART>rejected<BOLDEND>.'+'[LINEBREAK]'+ student.FullName                                    
    WHEN student.Status = 1 THEN ' <BOLDSTART>accepted<BOLDEND>.'
 END
END

我想在+ student.FullName上方添加類似如下的邏輯

IF (student.FullName LIKE '%[NEXTLINE]%')
BEGIN
    SELECT REPLACE (student.FullName,'[NEXTLINE]','')
END
ELSE
SELECT student.FullName

提前致謝

UPDATE

感謝D Stanley。 我如下解決了我的問題

CASE
 WHEN student.ID IS NULL THEN 
    WHEN student.Status = 0 THEN '<BOLDSTART>rejected<BOLDEND>.' + '[LINEBREAK]' + REPLACE (student.FullName,'[NEXTLINE]','')
    WHEN student.Status = 1 THEN ' <BOLDSTART>accepted<BOLDEND>.'
END

這是你想要的嗎?

更換

+ student.FullName

對於

+ CASE 
     WHEN student.FullName LIKE '%[NEXTLINE]%' THEN REPLACE (student.FullName,'[NEXTLINE]','')
     ELSE student.FullName
  END 

您可以將整個邏輯包裝在replace()調用中:

REPLACE((CASE WHEN student.ID IS NOT NULL THEN NULL
              WHEN student.Status = 0
              THEN '<BOLDSTART>rejected<BOLDEND>.' + '[LINEBREAK]' + student.FullName                                    
              WHEN student.Status = 1
              THEN ' <BOLDSTART>accepted<BOLDEND>.'
         END), '[NEXTLINE]', ''
        )

注意,我也簡化了您的邏輯。 嵌套的case語句不是必需的。 case是按順序評估的,因此您只需檢查所需條件即可。

您無需查看它是否包含字符串。 如果沒有,則REPLACE只會返回原始字符串:

CASE
 WHEN student.ID IS NULL THEN 
 CASE 
    WHEN student.Status = 0 THEN 
        '<BOLDSTART>rejected<BOLDEND>.'+'[LINEBREAK]'+ REPLACE(student.FullName,'[NEXTLINE]','')                                   
    WHEN student.Status = 1 THEN 
        ' <BOLDSTART>accepted<BOLDEND>.'
 END
END

暫無
暫無

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

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