Created
May 2, 2022 20:51
-
-
Save jingyang-li/c08c2c91da32f0500a3383bfd4f06504 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
--Use Number values from master.dbo.spt_values | |
--JSON 1 | |
;with mycte as ( | |
SELECT | |
[KEY] theKey, | |
Value TheValue | |
from | |
OpenJson ( | |
( | |
SELECT | |
CASE | |
WHEN Number % 15 = 0 THEN 'FizzBuzz' | |
WHEN Number % 5 = 0 THEN 'Buzz' | |
WHEN Number % 3 = 0 THEN 'Fizz' | |
ELSE CAST(Number AS VARCHAR(8)) | |
END myFizzBuzz | |
FROM | |
( | |
SELECT | |
Number | |
FROM | |
master.dbo.spt_values | |
where | |
type = 'P' | |
and Number >= 1 | |
and Number <= 1000 --maxnumber 0-2047 | |
) FizzBuzz For JSON AUTO | |
) | |
) | |
WHERE | |
type = 5 | |
) | |
select | |
unpvt.Value | |
from | |
mycte AS src | |
CROSS APPLY OpenJson(src.TheValue) AS unpvt | |
order by theKey | |
--JSON 2 | |
;with mycte as ( | |
SELECT ( | |
SELECT Vals = JSON_QUERY('["' + STRING_AGG(STRING_ESCAPE(Col, 'json'), '","') + '"]') | |
FOR JSON PATH | |
) jsCol | |
FROM (SELECT | |
CASE WHEN Number % 15 = 0 THEN 'FizzBuzz' | |
WHEN Number % 5 = 0 THEN 'Buzz' | |
WHEN Number % 3 = 0 THEN 'Fizz' | |
ELSE CAST(Number AS VARCHAR(8)) END Col | |
FROM master.dbo.spt_values | |
where type='P' and Number >=1 and Number <=1000 --maxnumber 0-2047 | |
) FizzBuzz | |
) | |
--select jsCol from mycte | |
select unpvt.value | |
--unpvt.value,unpvt.[key] | |
FROM mycte AS src | |
CROSS APPLY OpenJson(jsCol) j | |
Outer APPLY OpenJson(j.value) d | |
CROSS APPLY OpenJson(d.value) AS unpvt | |
Order by j.[Key] | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment