在SQL中将两列数据合并为一列?

时间:2011-11-16 20:37:20

标签: sql sql-server

我正在尝试将姓氏,名字和中间名组合成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'

5 个答案:

答案 0 :(得分:8)

COALESCE

  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 )

文档:http://msdn.microsoft.com/en-us/library/ms184325.aspx

答案 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