Reputation: 21
Currently I am stuck at how to select a value from JSON.
Table Inventory:
Name | Json_Column
-------+--------------------------------------------------------------------
Ball | [{"skuId":"1","quantity":1,"skuName":"$5 valley ball"},{"skuId":"2","quantity":1,"skuName":"$10 BasketBall"}]
Racket | [{"skuId":"3","quantity":1,"skuName":"$5 Badminton racket"}]
I want to convert the following result using select SQL statement to:
Name | Json_Column
-------+---------------------------------------
Ball | $5 valley ball, $10 BasketBall
Racket | $5 Badminton racket
When I use this SQL statement to select, it returns null; I need some help for the SQL.
select JSON_VALUE (Json_Column, '$.skuName') as Name
from Inventory
Upvotes: 1
Views: 3732
Reputation: 6617
Try with OPENJSON
SELECT * FROM OPENJSON(Json_Column, '$')
WITH (skuId int'$.skuId',quantity int '$.quantity',skuName varchar(50) '$.skuName')
Update
Okay, so to select from the table you can do cross apply with OPENJSON
SELECT skuName from Inventory
CROSS APPLY
OPENJSON (Json_Column)
WITH (skuId int'$.skuId',quantity int '$.quantity',skuName varchar(50) '$.skuName')
Upvotes: 1