简体   繁体   中英

Convert JSON value in SQL table to multiple columns

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM