sql - 在 Microsoft SQL Server 中连接全名
问题描述
假设我有一张包含以下信息的表格
Title FirstName MiddleName LastName Suffix
======|============|=============|============|======
Mr. John Fitzgerald Kennedy NULL
NULL John NULL Doe III
我想创建一个查询来输出上述信息的全名。例如,我希望输出看起来像
Mr. John Fitzgerald Kennedy
John Doe, III
我正在考虑使用该concat()
功能,但我不确定如何执行此操作以确保名称中没有多余的空格或逗号。
解决方案
这有点棘手。SQL Server 2017+ 支持concat_ws()
. 但是,后缀仍然需要逗号。幸运的是,concat()
忽略NULL
s:
select concat(concat_ws(' ', title, firstname, middlename, lastname),
', ' + suffix
)
早期版本需要更多的工作来避免在有NULL
值时出现多个空格:
select ltrim(concat(' ' + title,
' ' + firstname,
' ' + middlename,
' ' + lastname,
', ' + suffix
)
)
这使用了当参数为 时+
返回的事实。但是,忽略它。NULL
NULL
concat()
NULL
注意:如果所有名称都存在但后缀存在,那么您可能也不想要。但是,我怀疑这是您的数据中的一个问题。
这是一个 db<>fiddle。