如何删除存储在SQL Server列中的JSON属性?

2w2cym1i  于 2023-10-21  发布在  SQL Server
关注(0)|答案(3)|浏览(155)

我的任务是删除保存在SQL Server数据库表列中的JSON属性。这是我的表的结构

OrderId   Name   JSON

JSON列中,我有这个JSON数据:

{ 
    "Property1" :"",
    "Property2" :"",
    "metadata-department": "A",
    "metadata-group": "B"
}

我有500多条记录都有这个JSON值。
我可以更新所有记录以删除metadata-department吗?

3pvhb19x

3pvhb19x1#

这个问题是旧的,但我想我会张贴另一个解决方案,为那些谁可能最终在这里通过搜索引擎。
在SQL Server 2016或SQL Azure中,以下工作:

DECLARE @info NVARCHAR(100) = '{"name":"John","skills":["C#","SQL"]}'

PRINT JSON_MODIFY(@info, '$.name', NULL)

-- Result: {"skills":["C#","SQL"]}

来源:https://msdn.microsoft.com/en-us/library/dn921892.aspx

bd1hkmkf

bd1hkmkf2#

在MySQL中,函数是JSON_REMOVE()
UPDATE orders SET JSON=JSON_REMOVE(JSON, '$.metadata-department')
https://dev.mysql.com/doc/refman/8.0/en/json-modification-functions.html#function_json-remove

lf5gs5x2

lf5gs5x23#

在我的SQL Server环境中,我已经安装了SQL RegEx Replace函数,并使用这些函数,我已经实现了你想要的:

DECLARE @Text NVARCHAR(MAX) = '{ 
    "Property1" :"",
    "Property2" :"",
    "metadata-department": "A",
    "metadata-group": "B"
}';

PRINT dbo.RegExReplace(@Text, '"metadata-department": "[A-Za-z0-z]",\r\n\s+', '');

结果:

{ 
    "Property1" :"",
    "Property2" :"",
    "metadata-group": "B"
}

图片来源:https://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/

相关问题