Skip to content

Instantly share code, notes, and snippets.

@jingyang-li
Created May 2, 2022 20:51
Show Gist options
  • Save jingyang-li/c08c2c91da32f0500a3383bfd4f06504 to your computer and use it in GitHub Desktop.
Save jingyang-li/c08c2c91da32f0500a3383bfd4f06504 to your computer and use it in GitHub Desktop.
--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