One of my SQL table has two columns in the below format. Column "Parameters" in JSON Format
| Value | Parameters |
|---|---|
| 999-99-9999 | {"A":null,"B":"dfsnl","C":"dfdfs","D":"dsfdfs","E":"","F":"dfssdfsdfdsf", "G":null,"H":"dfdsf,dfssfddfsdsffds","I":"73834874378","J":null,"K":null} |
I am wondering if the column Parameter could be split into multiple column and hoping to achieve below format
| Value | A | B | C | D | E | F | G | H | I | J | K |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 999-99-9999 | dfsnl | dfdfs | dfdfs | dfssdfsdfdsf | dfdsf,dfssfddfsdsffds | 73834874378 |
Below query does not seem to work for me. Help please?
SELECT t.Value , t.Parameters , P.*
from MYTABLE t
CROSS APPLY OPENJSON(Parameters)
WITH (
A varchar(10),
B varchar(10),
C varchar(10),
D varchar(10),
E varchar(10),
F varchar(10),
G varchar(10),
H varchar(10),
I varchar(10),
J varchar(10),
K varchar(10)
) P;
Use openjson to turn the JSON into a set of rows and columns. By default this will make a row for each key/value pair. If you want one row with named columns, use with and give it a schema and JSON queries for each column.
cross apply it with the table to combine the JSON columns with real columns.
SELECT value, a, b, c
FROM test
CROSS APPLY OPENJSON (parameters) with(
a nvarchar(255) '$.A', b nvarchar(255) '$.B', c nvarchar(255) '$.C'
)
Demonstration.
See examples 3 and 4 in the openjson docs and JSON Data in SQL Server for more.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With