我在一个将数据存储为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)
如果还有其他替代解决方案,请告知我们。
答案 0 :(得分:0)
它很慢而且有点难看,但你可以这样使用PATINDEX:
PATINDEX('%{"Name":"Today Date","value":"%', JSONColumn)
这将为您提供字符串开始的JSONColumn
中的起始位置。然后,您可以使用SUBSTRING(JSONColumn, 30, 10)
来获取日期。
如果日期或JSON数据不是常数或从一个实例更改为另一个实例,这显然不起作用。
我没有对此进行测试,但之前使用过它。