[英]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.