我的表格列中有这样的内容:
{"InputDirection":0,"Mask":"AA","FormatString":null,"AutoCompleteValue":null,
"Filtered":"0123456789","AutoComplete":false,"ReadOnly":true}
我想要做的是在"Mask":"AA"
中将A更改为N,如果存在则删除"Filtered":"0123456789"
。掩码可以采用不同的形式,如A9A
,'AAAA`等。
如果是在C#中,我可以通过将其解析为JSON等来自己完成,但我需要在SQL中进行。
我发现这篇文章展示了如何将JSON
解析为Table
。这给了我一个想法,我可以将每个字段解析为临时表并对其进行更改并将其转换回JSON,以便更新我从中获取此JSON字段的实际字段。但是,这对我和服务器来说都是一个繁琐的过程。
有更好的想法吗?
答案 0 :(得分:2)
您可以使用此LINK。
然后使用以下代码
select * into #demo from
(Select * from parseJSON('{"InputDirection":0,"Mask":"AA","FormatString":null,"AutoCompleteValue":null,
"Filtered":"0123456789","AutoComplete":false,"ReadOnly":true}
')) a
select * from #demo
--- CHANGE THE DATA HERE AS REQUIRED
DECLARE @MyHierarchy JSONHierarchy;
INSERT INTO @myHierarchy
select * from #demo;
-- USE THIS VALUE AND UPDATE YOUR JSON COLUMN
SELECT dbo.ToJSON(@MyHierarchy)
drop table #demo
答案 1 :(得分:0)
我可能在这里遇到了问题,但为什么你不能简单地使用REPLACE更新所需内容和LIKE来识别应该更新的JSON字符串?
update table_T
set json_string = REPLACE(json_string, '"Filtered":"0123456789",', '')
where json_string like '%"Mask":"AA"%'
我不明白为什么你需要解析它......