繁体   English   中英

SQL 服务器中连接人名的正确空格数

[英]Correct Amount of Spaces with concatenated person's name in SQL Server

这是我现在拥有的 SQL。 永远不要缺少名字和姓氏,因为它们在验证界面上是必需的。 但是,如果缺少中间的首字母,我不希望结果中有两个空格; 我只想要一个空间。 我可以写一个案例陈述,但如果 SQL 已经为此目的有一个 function ,这似乎有点过头了。 有谁知道是否有用于此目的的 function? 代码会是什么样子?

SELECT ISNULL(contact.firstname, '') 
         + ' ' 
         + ISNULL(contact.middleinitial, '') 
         + ' ' 
         + ISNULL(contact.lastname, '')
FROM dbo.contact
SELECT
 ISNULL(contact.firstname, '') + 
 ISNULL(' ' + contact.middleinitial + ' ', ' ') + 
 ISNULL(contact.lastname, '')

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

SELECT
 LTRIM(RTRIM(
   ISNULL(contact.firstname, '') + 
    ISNULL(' ' + contact.middleinitial + ' ', ' ') + 
    ISNULL(contact.lastname, '')
 ))

在 SQL Server 2012 及更高版本中,您可以使用 CONCAT function:

    SELECT  CONCAT(contact.firstname, ' ' + contact.middleinitial, ' ' + contact.lastname)
    FROM dbo.contact

如果middleinitial是 null 然后在 null 值上附加空格将导致 null 值和 CONcateCAT 将在 concateCAT489DFF02 值期间跳过此 null 值。

SELECT REPLACE(ISNULL(contact.firstname, '') + ' ' + ISNULL(contact.middleinitial, '') + ' ' + ISNULL(contact.lastname, '')
               ,'  ',' ')
FROM dbo.contact

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM