如何在SQL Server中组合名字,中间名和姓氏

Rit*_*dav 5 sql-server

您可以参考以下查询以获取相同的信息-

1个

select FirstName +' '+ MiddleName +' ' + Lastname as Name from TableName.
Run Code Online (Sandbox Code Playgroud)

2

select CONCAT(FirstName , ' ' , MiddleName , ' ' , Lastname) as Name from 
  TableName
Run Code Online (Sandbox Code Playgroud)

3

select Isnull(FirstName,' ') +' '+ Isnull(MiddleName,' ')+' '+ Isnull(Lastname,' ') 
from TableName.
Run Code Online (Sandbox Code Playgroud)

注意:如果所有列都具有某个值(如果任何人为null或为空),则第1点查询将返回所有值,那么它将为所有返回null,这意味着Name将返回“ NULL”值。

为避免点号1,可以使用点号2或点号3-

我们可以使用IsNullCONCAT关键字来获得相同的结果。

如果任何人包含空值,那么''(空格)将添加下一个值。

sea*_*win 7

  • 使用的组合RTRIMLTRIM将去除在每个端部的任何空白。
  • CONCAT 将名称段附加在一起
  • COALESCE替换NULL为空字符串

格式化以提高可读性

SELECT 
    RTRIM(LTRIM(
        CONCAT(
            COALESCE(FirstName + ' ', '')
            , COALESCE(MiddleName + ' ', '')
            , COALESCE(Lastname, '')
        )
    )) AS Name
FROM TableName
Run Code Online (Sandbox Code Playgroud)

  • 可能值得注意的是,字符串连接使用 + 运算符与 CONCAT 函数的工作方式不同: null + *anyString* == null 与 CONCAT(null, *anyString*) == *anyString* (2认同)

Sam*_*eer 7

Replace 函数在连接名字、中间名和姓氏时删除两个字符空格。

SQL2016及以上兼容代码

SELECT REPLACE(CONCAT(FirstName+' ',MiddleName+' ',LastName+' '),'  ',' ') 
AS EmployeeName
FROM dbo.Employee
Run Code Online (Sandbox Code Playgroud)

SQL SERVER 2017 兼容代码:

  SELECT REPLACE(CONCAT_WS(' ',FirstName,MiddleName,LastName),'  ',' ')AS 
  EmployeeName FROM dbo.Employee 
Run Code Online (Sandbox Code Playgroud)


Jay*_*esh 4

Just Do A 将 #3 上的双空格替换为单空格,它应该按预期工作

SELECT 
    LTRIM(RTRIM(REPLACE(
    ISNULL(FirstName,' ') 
    +' '+ 
    ISNULL(MiddleName,' ')
    +' '+ 
    ISNULL(Lastname,' '),
    '  ',' ')))
FROM TableName
Run Code Online (Sandbox Code Playgroud)