1

我的表格列中有这样的内容:

{"InputDirection":0,"Mask":"AA","FormatString":null,"AutoCompleteValue":null,
 "Filtered":"0123456789","AutoComplete":false,"ReadOnly":true}

我想要做的是将 A 更改为 N并在它们存在时将其"Mask":"AA"删除。"Filtered":"0123456789"掩码可以是不同的形式A9A,例如“AAAA”等。

如果它在 C# 中,我可以通过将其解析为 JSON 等来自己完成,但我需要在 SQL 中完成。

我发现这篇文章展示了如何解析JSONTable. 这给了我一个想法,我可以将每个字段解析为临时表并对其进行更改并将其转换回 JSON,以便更新我从中获取此 JSON 字段的实际字段。但是,这对我和服务器来说都是一个繁琐的过程。

有更好的想法吗?

4

2 回答 2

2

您可以使用此链接

然后使用下面的代码

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
于 2013-05-22T06:20:30.743 回答
0

我可能在这里遇到了问题,但是为什么您不能简单地使用REPLACE来更新需要的内容并使用 LIKE 来识别应该更新的 JSON 字符串?

update table_T
set json_string = REPLACE(json_string, '"Filtered":"0123456789",', '')
where json_string like '%"Mask":"AA"%'

不知道我明白你为什么需要解析它……

于 2013-05-22T08:45:57.120 回答