Если у меня есть таблица базы данных (детали представляют собой строку JSON):
Id Details Price
----------------------------------------------
1 {"partNumber":"012345","qty":14} 14.99
2 {"partNumber":"22222","qty":11} 4.88
3 {"partNumber":"44444","qty":1} 3.24
4 {"partNumber":"72431223","qty":9} 3.33
5 {"partNumber":"98989","qty":1} 3.33
Я хочу вернуть только partNumber
и price
.
Так например
SELECT
Details.partNumber, Price
FROM
tableName
WHERE
price < 10.00
Я играл с этим и до сих пор
SELECT
Details.partNumber, price
FROM
tableName (SELECT partNumber
FROM OPENJSON(tableName.Details))
WHERE
Price = 10.00
что не работает. Любая помощь была бы замечательной. Спасибо за любые ответы
@VLOOKUP уже достаточно людей, которых смущает разница между ssms и SQL-сервером, но это не усугубляет ситуацию.
SELECT
part.value AS partNumber,
t.Price
FROM
tableName t
CROSS APPLY
OPENJSON(t.Details)
WITH (partNumber nvarchar(255) '$.partNumber') AS part
WHERE
t.Price = 10.00;
Хороший ответ помимо рабочего запроса содержит пояснение.
Спасибо что нашли время ответить
Вы можете использовать функцию JSON_VALUE
для извлечения одного фрагмента данных из структуры JSON в столбце.
Измените свой код, чтобы он выглядел так:
SELECT
JSON_VALUE(Details, '$.partNumber') AS 'PartNumber',
price
FROM
tableName
WHERE
Price < 10.00
Я пошел с этим ответом, спасибо за ответ и помощь
@VLOOKUP, почему тебя волнует версия ssms? Неужели вас волнует только версия SQL-сервера?