我想使用分隔符(逗号)将一列拆分为多个列。请有人帮忙解决这个问题:
Values
--------------
352306055351667,LoginId,gangadaran.s,Password,1,VersionCode,38,DistributorId,158,OrganisationId,33,MobileDate,2014\/04\/04,13,40,10,UserId,7916,LastDayClose,,BranchId,158,DownloadedDataDate,2014\/04\/04
我想要它:
col1 | col2 | col3 | col4 | col5|........| col23
-----------------------------------------------------------------------------
352306055351667|LoginId | gangadaran.s| Password | 1 |........| 2014\/04\/04
答案 0 :(得分:0)
您可以尝试this:
CREATE FUNCTION dbo.fnSplit(
@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = ',' -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
GO
然后简单地说:
select * from dbo.fnSplit('352306055351667,LoginId,gangadaran.s,Password,1,VersionCode,38,DistributorId,158,OrganisationId,33,MobileDate,2014\/04\/04,13,40,10,UserId,7916,LastDayClose,,BranchId,158,DownloadedDataDate,2014\/04\/04', ',')
答案 1 :(得分:0)
要从您的问题中获得结果:
DECLARE @string NVARCHAR(MAX) = '352306055351667,LoginId,gangadaran.s,Password,1,VersionCode,38,DistributorId,158,OrganisationId,33,MobileDate,2014\/04\/04,13,40,10,UserId,7916,LastDayClose,,BranchId,158,DownloadedDataDate,2014\/04\/04',
@xml xml
select @xml = cast('<d><q>'+REPLACE(@string,',','</q><q>')+'</q></d>' as xml);
SELECT n.v.value('q[1]','NVARCHAR(50)') as Col1,
n.v.value('q[2]','NVARCHAR(50)') as Col2,
n.v.value('q[3]','NVARCHAR(50)') as Col3,
n.v.value('q[4]','NVARCHAR(50)') as Col4,
n.v.value('q[5]','NVARCHAR(50)') as Col5,
n.v.value('q[6]','NVARCHAR(50)') as Col6,
n.v.value('q[7]','NVARCHAR(50)') as Col7,
n.v.value('q[8]','NVARCHAR(50)') as Col8,
n.v.value('q[9]','NVARCHAR(50)') as Col9,
n.v.value('q[10]','NVARCHAR(50)') as Col10,
n.v.value('q[11]','NVARCHAR(50)') as Col11,
n.v.value('q[12]','NVARCHAR(50)') as Col12,
n.v.value('q[13]','NVARCHAR(50)') as Col13,
n.v.value('q[14]','NVARCHAR(50)') as Col14,
n.v.value('q[15]','NVARCHAR(50)') as Col15,
n.v.value('q[16]','NVARCHAR(50)') as Col16,
n.v.value('q[17]','NVARCHAR(50)') as Col17,
n.v.value('q[18]','NVARCHAR(50)') as Col18,
n.v.value('q[19]','NVARCHAR(50)') as Col19,
n.v.value('q[20]','NVARCHAR(50)') as Col20,
n.v.value('q[21]','NVARCHAR(50)') as Col21,
n.v.value('q[22]','NVARCHAR(50)') as Col22,
n.v.value('q[23]','NVARCHAR(50)') as Col23,
n.v.value('q[24]','NVARCHAR(50)') as Col24
FROM @xml.nodes('/d') AS n(v)
结果:
Col1 Col2 Col3 Col4 Col5 Col6 Col7 Col8 Col9 Col10 Col11 Col12 Col13 Col14 Col15 Col16 Col17 Col18 Col19 Col20 Col21 Col22 Col23 Col24
-------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- --------------------------------------------------
352306055351667 LoginId gangadaran.s Password 1 VersionCode 38 DistributorId 158 OrganisationId 33 MobileDate 2014\/04\/04 13 40 10 UserId 7916 LastDayClose BranchId 158 DownloadedDataDate 2014\/04\/04
(1 row(s) affected)