sql - 替换 SQL 中的 JSON 格式字符串

标签 sql sql-server

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

{"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 字段的实际字段。然而,这对于我和服务器来说都是一个麻烦的过程。

还有更好的想法吗?

最佳答案

您可以使用这个 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

关于sql - 替换 SQL 中的 JSON 格式字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16679908/

相关文章:

mysql - 在 1 中优化许多 SQL 请求

sql - MS SQL 2005 中神秘的 CPU 事件

asp.net - 如何防止低效的 SQL 查询减慢数据库服务器的速度

java - jdbc 连接到 SQL Server

java - Android SetText 不能在 TextVIew 上工作,但值在那里

php - foreach 中的 SQL 更新仅更新数字而不更新文本

c# - 使 Entity Framework 重用一个值

sql - T-SQL 返回单个值而不是累积值

SQL:IN 子句的问题,如何返回所有值,甚至是重复值

sql - 从本地 WCF 连接到 Azure SQL 数据库