Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL concat多个名称,并在两个名称的情况下添加破折号_Sql_Sql Server_Sql Server 2012_Concat_Names - Fatal编程技术网

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

我正试图找出如何将多个名字(如姓氏和处女名(包括可能的前缀))连接为一个全名,而不使用双空格,仅在必要时使用破折号(当一个有两个名字时)

例如:

  • 当一个人同时有姓和姓时,我希望它看起来像
    'A.van Dijk-Turner'
    (注意,破折号,'van de'是前缀)
  • 当一个人只有姓或娘家姓时,我希望它看起来像是
    '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一起使用?我一直在不想看到它的地方看到破折号。只有在有两个名称的情况下,它们才应该用破折号分隔。通过上面的查询,您不能看到令人讨厌的破折号!:)