我需要檢查列中間名是否包含任何值。 如果它是空的,那麼它不應該與名稱連接。如何檢查選擇查詢中的列中的值
Select
..
Agent,
FirstName + ' ' MiddleName + ' ' + LastName as Name,
...
from tbSystemUser
在上面的查詢中,如果MiddleName爲空,則在Name中添加兩次空格。
我需要檢查列中間名是否包含任何值。 如果它是空的,那麼它不應該與名稱連接。如何檢查選擇查詢中的列中的值
Select
..
Agent,
FirstName + ' ' MiddleName + ' ' + LastName as Name,
...
from tbSystemUser
在上面的查詢中,如果MiddleName爲空,則在Name中添加兩次空格。
您可以使用case語句
Select
..
Agent,
Case MiddleName
when ' ' then
FirstName + ' ' + LastName
else
FirstName + ' ' MiddleName + ' ' + LastName
end
as Name,
...
from tbSystemUser
OR
Select
..
Agent,
Case
when MiddleName = ' ' then
FirstName + ' ' + LastName
else
FirstName + ' ' MiddleName + ' ' + LastName
end
as Name,
...
from tbSystemUser
使用CASE表達式來只添加Ť他MiddleName + ' '
一部分,如果中間名不爲空:
Select
...
Agent,
FirstName +
case when MiddleName is not null then MiddleName + ' ' end +
LastName as Name,
...
from tbSystemUser
SELECT FirstName
+IIF(ISNULL(LTRIM(RTRIM(MiddleName)),'')<>'',' '+MiddleName,'')
+' '+LastName as Name
情況下或者在您的SQL Server版本比舊的2012:
SELECT FirstName
+CASE WHEN ISNULL(LTRIM(RTRIM(MiddleName))) <> ''
THEN ' '+MiddleName
ELSE '' END
+' '+LastName as Name
您沒有指定什麼意思空。與大多數其他解決方案不同,這將處理任何長度的空字符串,包括空值,但不包含特殊字符。我會假定沒有人去中間名並添加換行符? :)
我相信你可以使用子查詢這樣:
Select Agent, Name from
(
Select t1.Agent as Agent, t1.FirstName + ' ' t1.MiddleName + ' ' + t1.LastName as Name,
from tbSystemUser as t1 WHERE t1.MiddleName IS NOT NULL
)
NATURAL JOIN
(
Select t2.Agent as Agent, t2.FirstName + ' ' + t2.LastName as Name,
from tbSystemUser as t2 WHERE t2.MiddleName IS NULL
)
這將基於由兩個選擇創建的名稱構建你的答案。
將'Middlename'設爲NULL# –