Невозможно извлечь полезную информацию из данных JSON, хранящихся в таблице.
У меня есть данные JSON, хранящиеся в таблице SQL Server, к которой я хотел бы получить доступ к одному или двум элементам для проверки значений и т. Д. Моя таблица определенакак показано ниже:
CREATE TABLE [Events].[events](
[eventID] [int] IDENTITY(1,1) NOT NULL,
[eventType] [smallint] NOT NULL,
[eventDate] [datetime] NOT NULL,
[eventMetaData] [nvarchar](max) NULL,
CONSTRAINT [PK_events] PRIMARY KEY CLUSTERED
(
[eventID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
с данными JSON, содержащимися в столбце eventMetaData.
В столбце eventMetaData хранятся данные следующим образом:
[{
"jn": "jn1",
"src": "client123",
"id": 649
}]
и I 'Я хотел бы попытаться извлечь эту информацию для отображения на странице.
До сих пор я пытался использовать JSON_VALUE
и JSON_QUERY
методы извлечения требуемой строки, хотя я считаю, что это JSON_VALUE
, который мне следует использовать.
SELECT top 10 eventId, eventDate,
JSON_VALUE(eventData,'$.jn') AS jn
from events
WHERE ISJSON(eventData)>0
order by eventdate desc
Когда я запускаю это, я получаю eventID & eventDate, но всегда получаю NULL в столбце jn.
В некоторых публикациях приведены примеры данных, находящихся в переменной типа nvarchar (max), и если я добавлю свой JSON в него, он будет работать с моим запросом, но мне действительно нужно, чтобы он пришел из таблицы, поскольку мне нужно отобразить несколько строк для моего клиента.
Из примера, который я опубликовал выше, яЯ хотел бы получить значения eventID, eventDate & jn из запроса, но в тот момент, когда я получаю eventID & eventDate, но всегда получаю NULL в столбце jn.
В конечном итоге я надеюсь получитьдополнительные ключи в столбце JSON, к которым я могу получить доступ и отобразить их конечному пользователю.