【问题标题】:JSON extract valueJSON 提取值
【发布时间】:2020-08-14 12:54:58
【问题描述】:

我在表格中有这些数据:

{ "keys": [ "00170000007u8uJ" ] }

我只需要在 SQL Server 2016 选择查询中提取值 00170000007u8uJ

【问题讨论】:

  • 那么如何获得该值?特定列具有字符串、xml..etc 的组合,所以我认为它是 xml。该列使用的数据类型是 ntext
  • 将 SQL Server 版本添加到您的问题中。
  • SQL Server 2016

标签: sql sql-server tsql sql-server-2016


【解决方案1】:

应该这样做

declare @json           nvarchar(max)=N'{ "keys": [ "00170000007u8uJ" ] }';

select [value] from openjson(json_query(@json, N'$.keys'));

如果 JSON 在表中,那么像这样

create table #temp_json(json_col        nvarchar(max));
insert #temp_json(json_col) values (N'{ "keys": [ "00170000007u8uJ" ] }');

select [value] 
from
  #temp_json tj
 cross apply
  openjson(json_query(tj.json_col, N'$.keys'));

【讨论】:

  • 我在哪里可以在您的查询中添加表格?
  • @Vinay,当然,在FROM 子句中指定您的表名而不是#temp。请注意,当数组有多个键时,查询将返回多行。此外,如果您传递无效的 JSON(例如 XML 值),查询将失败。
猜你喜欢
  • 2023-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-13
  • 2019-08-31
  • 2021-12-16
  • 2020-05-03
相关资源
最近更新 更多