我有两个字符串,分别为@CountryLocationIDs和@LocationIDs,其值分别为:
@CountryLocationIDs = 400,600,150,850,160,250 @LocationIDs1 = 600,150,900
然后,我需要另一个变量中的输出为:
@LocationIDs = 400,600,150,850,160,250,900
任何人都请帮忙…预先感谢…
我创建了一个表值函数,该函数接受两个参数,第一个是带有ID的字符串,第二个是字符串中的定界符。
CREATE FUNCTION [dbo].[Split](@String nvarchar(4000), @Delimiter char(1)) returns @temptable TABLE (items nvarchar(4000)) as begin declare @idx int declare @slice nvarchar(4000) select @idx = 1 if len(@String)<1 or @String is null return while @idx!= 0 begin set @idx = charindex(@Delimiter,@String) if @idx!=0 set @slice = left(@String,@idx - 1) else set @slice = @String if(len(@slice)>0) insert into @temptable(Items) values(@slice) set @String = right(@String,len(@String) - @idx) if len(@String) = 0 break end return end
创建函数后,只需使用UNIONset运算符即可:
UNION
已编辑
WITH ListCTE AS ( select items from dbo.split('400,600,150,850,160,250', ',') union select items from dbo.split('600,150,900', ',') ) SELECT TOP 1 MemberList = substring((SELECT ( ', ' + items ) FROM ListCTE t2 ORDER BY items FOR XML PATH( '' ) ), 3, 1000 )FROM ListCTE t1
有了它,UNION您将自动从两个字符串中获得不同的值,因此您不需要使用DISTINCT子句
DISTINCT