在SQL Server中使用连接人的名称更正空间量

Mac*_*ver 3 sql-server varchar spaces concatenation

这是我现在拥有的SQL.永远不应该丢失名字和姓氏,因为在验证界面上需要它们.但是,如果缺少中间的首字母,我不希望结果中有两个空格; 我只想要一个空间.我可以放一个case语句,但是如果SQL已经有了一个用于此目的的函数,那似乎有些过分.有没有人知道是否有用于此目的的功能?代码会是什么样的?

SELECT ISNULL(contact.firstname, '') 
         + ' ' 
         + ISNULL(contact.middleinitial, '') 
         + ' ' 
         + ISNULL(contact.lastname, '')
FROM dbo.contact
Run Code Online (Sandbox Code Playgroud)

gbn*_*gbn 7

SELECT
 ISNULL(contact.firstname, '') + 
 ISNULL(' ' + contact.middleinitial + ' ', ' ') + 
 ISNULL(contact.lastname, '')
Run Code Online (Sandbox Code Playgroud)

但是,您应该删除第一个名称,姓氏(定义为NOT NULL?)的ISNULL或添加一些修剪

SELECT
 LTRIM(RTRIM(
   ISNULL(contact.firstname, '') + 
    ISNULL(' ' + contact.middleinitial + ' ', ' ') + 
    ISNULL(contact.lastname, '')
 ))
Run Code Online (Sandbox Code Playgroud)