从DB列nvarchar解析JSON文本

时间:2017-02-27 13:03:15

标签: sql-server sql-server-2014

我在一个将数据存储为json对象的列中有值。

下面是一个如何存储值的示例,我知道我必须在这里获取值的名称

{"Name":"Today Date","value":"02/23/2017"},{"Name":"Exp Date","value":"02/23/2016"}
  

我想要名字的价值"今日日期"在这里。

我不能使用json解析,因为我们仍在使用sql server 2014。

  

目前,根据r41n的回答提示,我做了以下几点:

select SUBSTRING
( '{"Name":"Today Date","value":"02/23/2017"},{"Name":"Exp Date","value":"02/23/2016"}',

PATINDEX('%{"Name":"Today Date","value":"%', '{"Name":"Today Date","value":"02/23/2017"},{"Name":"Exp Date","value":"02/23/2016"}') + len ('{"Name":"Today Date","value":"'),
 10)

如果还有其他替代解决方案,请告知我们。

1 个答案:

答案 0 :(得分:0)

PATINDEX + SUBSTRING

它很慢而且有点难看,但你可以这样使用PATINDEX

PATINDEX('%{"Name":"Today Date","value":"%', JSONColumn)

这将为您提供字符串开始的JSONColumn中的起始位置。然后,您可以使用SUBSTRING(JSONColumn, 30, 10)来获取日期。

如果日期或JSON数据不是常数或从一个实例更改为另一个实例,这显然不起作用。

我没有对此进行测试,但之前使用过它。