2
This commit is contained in:
72
01.扩展/HandleUtils/sql/拆分字段值.sql
Normal file
72
01.扩展/HandleUtils/sql/拆分字段值.sql
Normal file
@@ -0,0 +1,72 @@
|
||||
declare @val varchar(8000)
|
||||
set @val = 'AA1,10.1;BB1,6.5'
|
||||
|
||||
/************************<EFBFBD><EFBFBD><EFBFBD>ֳɶ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>start***************************/
|
||||
--v1.0
|
||||
SELECT
|
||||
rowSet.[1] AS 'MaterialId'
|
||||
,rowSet.[2] AS 'Qty'
|
||||
,rowSet.[3] AS 'StockId'
|
||||
,rowSet.[4] AS 'dateTime'
|
||||
FROM (
|
||||
SELECT
|
||||
CAST('<v>'+ REPLACE(rowSet.resVal,',','</v><v>') + '</v>' AS XML) AS xmlVal
|
||||
,ROW_NUMBER() over (order by resVal) RN
|
||||
FROM (
|
||||
SELECT CAST('<v>'+ REPLACE('AA1,10.1;BB1,16.5',';','</v><v>') + '</v>' AS XML) AS xmlVal
|
||||
) AS valSet
|
||||
OUTER APPLY (
|
||||
SELECT T.C.value('.','varchar(100)') resVal
|
||||
FROM valSet.xmlVal.nodes('/v') AS T(C)
|
||||
) rowSet
|
||||
) AS valSet
|
||||
OUTER APPLY (
|
||||
SELECT TT2.*
|
||||
FROM (
|
||||
SELECT T.C.value('.','varchar(100)') resVal
|
||||
,ROW_NUMBER() over (order by valSet.RN) RowNo
|
||||
FROM valSet.xmlVal.nodes('/v') AS T(C)
|
||||
) TT
|
||||
PIVOT ( MAX(TT.resVal) FOR TT.RowNo IN ([1],[2],[3],[4])) TT2
|
||||
) rowSet
|
||||
--v2.0
|
||||
SELECT
|
||||
rowSet2.[1] AS 'MaterialId'
|
||||
,rowSet2.[2] AS 'Qty'
|
||||
,rowSet2.[3] AS 'StockId'
|
||||
,rowSet2.[4] AS 'FDate'
|
||||
,rowSet2.[5] AS 'FSBILLID'
|
||||
,rowSet2.[6] AS 'FSID'
|
||||
,rowSet2.[7] AS 'FSTABLENAME'
|
||||
,0 AS 'HasVal'
|
||||
FROM (
|
||||
SELECT 1 ID,CAST('<v>'+ REPLACE('AA1,10.1;BB1,16.5',';','</v><v>') + '</v>' AS XML) AS xmlVal
|
||||
) AS valSet
|
||||
OUTER APPLY (
|
||||
SELECT ROW_NUMBER() OVER (ORDER BY valSet.ID) RN
|
||||
,CAST('<v>'+ REPLACE(T.C.value('.','varchar(100)'),',','</v><v>') + '</v>' AS XML) xmlVal
|
||||
FROM valSet.xmlVal.nodes('/v') AS T(C)
|
||||
) rowSet
|
||||
OUTER APPLY (
|
||||
SELECT * FROM (
|
||||
SELECT T.C.value('.','varchar(100)') AS xmlVal
|
||||
,ROW_NUMBER() OVER (ORDER BY rowSet.RN) RowNo
|
||||
FROM rowSet.xmlVal.nodes('/v') AS T(C)
|
||||
) TT
|
||||
PIVOT ( MAX(TT.xmlVal) FOR TT.RowNo IN ([1],[2],[3],[4],[5],[6],[7])) TT2
|
||||
) rowSet2
|
||||
/************************<EFBFBD><EFBFBD><EFBFBD>ֳɶ<EFBFBD><EFBFBD>ж<EFBFBD><EFBFBD><EFBFBD>end***************************/
|
||||
|
||||
/************************<EFBFBD><EFBFBD><EFBFBD>ֳɶ<EFBFBD><EFBFBD><EFBFBD>start***************************/
|
||||
SELECT
|
||||
rowSet.resVal
|
||||
,rowSet.rowNo
|
||||
FROM (
|
||||
SELECT CAST('<v>'+ REPLACE('AA1,10.1;BB1,6.5',';','</v><v>') + '</v>' AS XML) AS xmlVal
|
||||
) AS valSet
|
||||
OUTER APPLY (
|
||||
SELECT T.C.value('.','varchar(100)') resVal
|
||||
,row_number() over (order by C) rowNo
|
||||
FROM valSet.xmlVal.nodes('/v') AS T(C)
|
||||
) rowSet
|
||||
/************************<EFBFBD><EFBFBD><EFBFBD>ֳɶ<EFBFBD><EFBFBD><EFBFBD>end***************************/
|
||||
Reference in New Issue
Block a user