我正在尝试将姓氏,名字和中间名组合成SQL语句中的单个排序名称列。有时中间名称为NULL
,如果是这种情况,则排序名称显示为NULL
。
如何处理?
SELECT TOP 500
Last_Name, First_Name, Middle_Name,
[Last_Name] + ',' + [First_Name] + ' ' + [Middle_Name] AS SORT_NAME
FROM [dbo].[usr_CUSTOMER]
ORDER BY SORT_NAME
结果:
Last_Name First_Name MiddleName Sort_Name
Aa Robert NULL NULL
但我想看到sort_name为'Aa,Robert'
。
答案 0 :(得分:8)
COALESCE([Last_Name], '') + ',' + COALESCE([First_Name], '') + ' ' +
COALESCE(
[Middle_Name], '') AS SORT_NAME
当然,当姓氏或者第一个和第一个中间都是空的时候,这会留下丑陋的逗号,所以你的实际代码需要更加聪明。
答案 1 :(得分:2)
使用ISNULL()
功能 - 它会将NULL
值替换为您定义的内容:
SELECT TOP 500
Last_Name, First_Name, Middle_Name,
[Last_Name] + ',' + [First_Name] + ' ' + ISNULL([Middle_Name], '') as SORT_NAME
FROM [dbo].[usr_CUSTOMER]
ORDER BY SORT_NAME
答案 2 :(得分:2)
您可以使用ISNULL功能
ISNULL ( check_expression , replacement_value )
答案 3 :(得分:1)
请注意,我在COALESCE中移动了分隔First和Middle名称的空格,以便在Middle name为NULL时避免使用尾随空格。
..., [Last_Name]+ ','+ [First_Name] + COALESCE(' '+ [Middle_Name],'') as SORT_NAME...
答案 4 :(得分:0)
尝试
CONCAT(firstname,' ', LastName,' ', MiddleName) AS Full_Name