How to parse a string and create several columns from it?

后端 未结 4 1636
半阙折子戏
半阙折子戏 2020-12-19 10:33

I have a varchar(max) field containing Name Value pairs, in every line I have Name UnderScore Value.

I need to do a query against it so that it returns

4条回答
  •  自闭症患者
    2020-12-19 10:50

     DECLARE @TExt NVARCHAR(MAX)= '***[ffffd]***
        dfdf
        fdfdfdfdfdf
        ***[fff]***
        4545445
        45454
        ***[ahaASSDAD]***
    
        DFDFDF
        ***[SOME   TEXT]***
        '
    
        DECLARE @Delimiter VARCHAR(1000)= CHAR(13) + CHAR(10) ;
        WITH    numbers
                  AS ( SELECT   ROW_NUMBER() OVER ( ORDER BY o.object_id, o2.object_id ) Number
                       FROM     sys.objects o
                                CROSS JOIN sys.objects o2
                     ),
                c AS ( SELECT   Number CHARBegin ,
                                ROW_NUMBER() OVER ( ORDER BY number ) RN
                       FROM     numbers
                       WHERE    SUBSTRING(@text, Number, LEN(@Delimiter)) = @Delimiter
                     ),
                res
                  AS ( SELECT   CHARBegin ,
                                CAST(LEFT(@text, charbegin) AS NVARCHAR(MAX)) Res ,
                                RN
                       FROM     c
                       WHERE    rn = 1
                       UNION ALL
                       SELECT   c.CHARBegin ,
                                CAST(SUBSTRING(@text, res.CHARBegin,
                                               c.CHARBegin - res.CHARBegin) AS NVARCHAR(MAX)) ,
                                c.RN
                       FROM     c
                                JOIN res ON c.RN = res.RN + 1
                     )
            SELECT  *
            FROM    res
    

提交回复
热议问题