【问题标题】:Concatenate two strings into one without duplicates将两个字符串连接为一个而不重复
【发布时间】:2018-11-21 06:57:58
【问题描述】:

我有两个字符串:

DECLARE @str1 varchar(max) = '[First Name],[Last Name],[Middle Name]'
DECLARE @str2 varchar(max) = '[First Name],[Pin Code],[Address],[Last Name]'

想要将两个字符串连接成一个而不重复。

预期输出:

str3
-------------------------------------------------------------
[First Name],[Last Name],[Middle Name],[Pin Code],[Address]

【问题讨论】:

  • 你需要一个字符串拆分函数

标签: sql-server sql-server-2008-r2


【解决方案1】:

您可以使用STRING_SPLIT()函数和DISTINCT作为

DECLARE @str1 varchar(max) = '[First Name],[Last Name],[Middle Name]';
DECLARE @str2 varchar(max) = '[First Name],[Pin Code],[Address],[Last Name]';

SELECT DISTINCT *
FROM STRING_SPLIT(@Str1 +','+ @Str2, ',');

或者

DECLARE @str1 varchar(max) = '[First Name],[Last Name],[Middle Name]';
DECLARE @str2 varchar(max) = '[First Name],[Pin Code],[Address],[Last Name]';

SELECT DISTINCT *
FROM STRING_SPLIT(CONCAT(@Str1, ',', @Str2), ',');

将它作为一行来获取

declare @result varchar(max) = '';

SELECT @result =  @result + value
FROM STRING_SPLIT(CONCAT(@Str1, ',', @Str2), ',')
group by value;

SELECT @result;

Demo

由于您使用的是 SQL Server 2008,因此您需要创建自己的函数,例如 this one here

【讨论】:

  • 我认为需要在拆分函数中将+','+ 放在@str1@str2 之间。
  • @Squirrel 真的吗?为什么 + 而不是 ,??这会运行吗?
  • 我的错误。需要咖啡
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-10-15
  • 2019-10-23
  • 2014-05-20
  • 2015-09-17
  • 2012-09-28
  • 2015-06-18
  • 2013-10-04
相关资源
最近更新 更多