在sql中拆分逗号分隔字符串
管理器主表 和用户表 我希望使用主表使用逗号分隔的管理器名称 我想要这份表格的结果 我的问题是这样的在sql中拆分逗号分隔字符串,sql,sql-server,split,Sql,Sql Server,Split,管理器主表 和用户表 我希望使用主表使用逗号分隔的管理器名称 我想要这份表格的结果 我的问题是这样的 declare @ststring varchar(max)= select manager from customer CREATE TABLE #tblUserCustomer ( inCustomerID iNT) Insert into #tblUserCustomer select stvalue from dbo.getlistfrmcommaseprated_int
declare @ststring varchar(max)= select manager
from customer
CREATE TABLE #tblUserCustomer ( inCustomerID iNT)
Insert into #tblUserCustomer
select stvalue from dbo.getlistfrmcommaseprated_int('1,2,4')
declare @stcscont varchar(1000)
select @stcscont = (select Um.Name + ',' from master um
join #tblUserCustomer T on t.inCustomerID = um.inuserid
FOR XML PATH('')
)
print @stcscont
drop table #tblUserCustomer
对于单个数据,此查询可以是完整的帮助
但是我有多行我没有你的解析函数,所以我用了我的。[dbo].[udf Str Parse]返回RETVAL 一些样本数据 实际查询 返回 编辑-添加了我的解析函数
我想要用户表中给出的与管理器名称相关的管理器id。您好,它给出的错误是无效的对象名称“dbo.udf Str Parse”。@radhasingh阅读了我答案的第一行,很高兴提供我的解析函数。只是假设你不想要two@radhasingh添加了我的解析函数
Declare @Manager table (ID int,Name varchar(25))
Insert Into @Manager values
(1,'Ajay'),
(2,'Sarita'),
(3,'Akash'),
(4,'Niti')
Declare @User table (ID int,Name varchar(25),Manager varchar(25))
Insert Into @User values
(1,'Javed','1,3'),
(2,'Ruma' ,'1,4')
Select A.*
,ManagerName = B.String
From @User A
Cross Apply (
Select String = Stuff((Select ',' +Name
From (
Select M.Name,ML.RetSeq
From @Manager M
Join [dbo].[udf-Str-Parse](A.Manager,',') ML
on M.ID=ML.RetVal
) X
Order By RetSeq
For XML Path ('')),1,1,'')
) B
ID Name Manager ManagerName
1 Javed 1,3 Ajay,Akash
2 Ruma 1,4 Ajay,Niti
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimiter varchar(10))
Returns Table
As
Return (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>' + replace((Select replace(@String,@Delimiter,'§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as X
Cross Apply x.nodes('x') AS B(i)
);
--Thanks Shnugo for making this XML safe
--Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
--Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
--Select * from [dbo].[udf-Str-Parse]('this,is,<test>,for,< & >',',')
--Performance On a 5,000 random sample -8K 77.8ms, -1M 79ms (+1.16), -- 91.66ms (+13.8)