Advertisement
DataMonkey

chomping on ;

Nov 20th, 2019
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
T-SQL 2.64 KB | None | 0 0
  1. WITH CTE (RECORDID, COMMENT, LONG_TEXT, COL_ORDER)    AS(
  2.         SELECT
  3.             RECORDID
  4.         --, LEFT(LONG_TEXT, 200)                                                                                                     -- 200 char chunk. this is max.
  5.         --, REVERSE(LEFT(LONG_TEXT, 200))                                                                                            -- flip it around
  6.         --, CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200)))                                                                            -- find the first (last) ;
  7.         --, RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 200-CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200))))                                  -- bite off what's after (before) the ;
  8.         ,   REVERSE(RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 201-CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200))))) AS  COMMENT             -- flip around again to get real string
  9.         --,LEN(REVERSE(RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 201 - CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200))))))                   -- how long is the string?
  10.         ,   SUBSTRING(LONG_TEXT, LEN(REVERSE(RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 201 - CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200)))))) + 1, LEN(LONG_TEXT))  AS  COMMENT_REMAIN  -- chomp off parsed string and get the remainder
  11.         ,   COL_ORDER
  12.         FROM    
  13.             [VARIABLES2]    
  14.         WHERE  1 =  1
  15.             AND COL_ORDER =  1  
  16.         UNION ALL
  17.         SELECT  
  18.             RECORDID
  19.         ,   REVERSE(RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 201 - CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200)))))  AS  COMMENT
  20.         ,   SUBSTRING(LONG_TEXT, LEN(REVERSE(RIGHT(REVERSE(LEFT(LONG_TEXT, 200)), 201 - CHARINDEX(';', REVERSE(LEFT(LONG_TEXT, 200)))))) + 1, LEN(LONG_TEXT))  AS  COMMENT_REMAIN
  21.         ,   COL_ORDER + 1
  22.         FROM    
  23.             CTE
  24.         WHERE  1 =  1
  25.         AND LONG_TEXT  !=  ''
  26.     )  
  27. SELECT  
  28.         RECORDID
  29.       , Max(Case When Col_Order='1' then comment End) as [comment_1]
  30.       , Max(Case When Col_Order='2' then comment End) as [comment_2]
  31.       , Max(Case When Col_Order='3' then comment End) as [comment_3]
  32.       , Max(Case When Col_Order='4' then comment End) as [comment_4]
  33.       , Max(Case When Col_Order='5' then comment End) as [comment_5]
  34.       , Max(Case When Col_Order='6' then comment End) as [comment_6]
  35.       , Max(Case When Col_Order='7' then comment End) as [comment_7]
  36.       , Max(Case When Col_Order='8' then comment End) as [comment_8]
  37.       , Max(Case When Col_Order='9' then comment End) as [comment_9]
  38.       , Max(Case When Col_Order='10' then comment End) as [comment_10]
  39. FROM
  40.     [CTE]
  41. GROUP BY
  42.     RECORDID
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement