SQL concat多个名称,并在两个名称的情况下添加破折号
我正试图找出如何将多个名字(如姓氏和处女名(包括可能的前缀))连接为一个全名,而不使用双空格,仅在必要时使用破折号(当一个有两个名字时) 例如:SQL concat多个名称,并在两个名称的情况下添加破折号,sql,sql-server,sql-server-2012,concat,names,Sql,Sql Server,Sql Server 2012,Concat,Names,我正试图找出如何将多个名字(如姓氏和处女名(包括可能的前缀))连接为一个全名,而不使用双空格,仅在必要时使用破折号(当一个有两个名字时) 例如: 当一个人同时有姓和姓时,我希望它看起来像 'A.van Dijk-Turner'(注意,破折号,'van de'是前缀) 当一个人只有姓或娘家姓时,我希望它看起来像是'a van Dijk' 下面的示例代码显然是不够的: concat (initals, ' ',prefixlastname,' ', lastname, ' - ', prefix
- 当一个人同时有姓和姓时,我希望它看起来像
(注意,破折号,'van de'是前缀)'A.van Dijk-Turner'
- 当一个人只有姓或娘家姓时,我希望它看起来像是
'a van Dijk'
concat (initals, ' ',prefixlastname,' ', lastname, ' - ', prefixmaidenname ', maidenname) AS 'full name'
如果一个人只有婚前姓,上面的代码会导致例如“a-van Dijk”
最有效的解决方案是什么?先谢谢你 尝试类似于
合并(initals | |“”,)
,即如果首字母不为null,则返回首字母加空格。如果初始值为NULL,则返回一个空字符串。按如下方式使用:
SELECT REVERSE(SUBSTRING(REVERSE(ISNULL(FirstName + '-','') + ISNULL(LastName + '-','')),2,8000))
或其他更简单的版本:
SELECT REVERSE(SUBSTRING(REVERSE(CONCAT(FirstName +'-', LastName + '-') ),2,8000))
还有你想要的任何其他栏目我的两分钱:
合并(familynameprefix+“”+familyname+’-’,familyname+’-’,“”)+合并(birthnameprefix+“”+birthname,birthname,“”)Naam
先决条件:
- 语法通常是荷兰语
- 出生名是你与生俱来的名字:永远存在
- familyname是已婚姓名(仅适用于女性)
- 这只有在男人的名字只有出生名的情况下才有效
Coalesce从左到右依次查找第一个非空值。如果没有名称前缀,将计算下一个值。您使用的是什么数据库?我使用的是SQL server 12.0.2数据库,但语法不被接受(语法不正确?)。当我将其更改为单管道时,它也不起作用(数据类型nvarchar和varchar在“|”运算符中不兼容)。直到现在我才注意到SQL Server标记,所以我写了一个或多或少与dbms无关的答案。也许coalesce(concat(缩写为“”),“”)可以与SQL Server一起使用?我一直在不想看到它的地方看到破折号。只有在有两个名称的情况下,它们才应该用破折号分隔。通过上面的查询,您不能看到令人讨厌的破折号!:)