Sql server 将2列合并为1列

Sql server 将2列合并为1列,sql-server,Sql Server,查找客户编号、姓氏和名字。将名称显示为标题为“名称”的一列 我可以用什么来正确地执行此操作呢?难道不是这么简单吗 我看不到您尝试将一行与同一表中的同一行联接时有任何值 SELECT CustomerNumber ,LName + ' ' + FName AS Name FROM Customers; 注意:确保两个名称部分都不是NULL,否则整个连接字符串将是NULL。您可以使用,如下所示: SELECT A.CustomerNumber, CONCAT(A.LName, ' '

查找客户编号、姓氏和名字。将名称显示为标题为“名称”的一列


我可以用什么来正确地执行此操作呢?难道不是这么简单吗

我看不到您尝试将一行与同一表中的同一行联接时有任何值

SELECT CustomerNumber
      ,LName + ' ' +  FName AS Name
FROM Customers;
注意:确保两个名称部分都不是
NULL
,否则整个连接字符串将是
NULL

您可以使用,如下所示:

SELECT A.CustomerNumber, CONCAT(A.LName, ' ', B.FName) AS Name
FROM Customers as A
LEFT JOIN Customers as B
ON A.CustomerNumber=B.CustomerNumber;

是的,哈哈,非常感谢,我是sql的新手,不知道+''+如果FName的LName为NULL,这会失败。通过使用CONCAT函数,可以避免这种情况。当我创建数据库时,FName和LName都不是null,所以我不应该有这个问题。@BendikAugustNesbø,是的,但您需要SQL Server 2012或更高版本。和本例一样,在我知道的所有数据库中,LName和FName列都是“NOTNULL”。如果不需要,我会尽量避免使用代价高昂的函数…@Shnugo:没有提供FName和LName列定义为
notnull
的信息。此外,由于OP使用的是
左连接,因此B很容易包含空值。然而,我将其包括在内,以便与OP发布的原始查询类似。
SELECT A.CustomerNumber, CONCAT(A.LName, ' ', B.FName) AS Name
FROM Customers as A
LEFT JOIN Customers as B
ON A.CustomerNumber=B.CustomerNumber;