我的任务是删除保存在SQL Server数据库表列中的JSON属性。这是我的表的结构
OrderId Name JSON
在JSON列中,我有这个JSON数据:
JSON
{ "Property1" :"", "Property2" :"", "metadata-department": "A", "metadata-group": "B" }
我有500多条记录都有这个JSON值。我可以更新所有记录以删除metadata-department吗?
metadata-department
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
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
JSON_REMOVE()
UPDATE orders SET JSON=JSON_REMOVE(JSON, '$.metadata-department')
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/
3条答案
按热度按时间3pvhb19x1#
这个问题是旧的,但我想我会张贴另一个解决方案,为那些谁可能最终在这里通过搜索引擎。
在SQL Server 2016或SQL Azure中,以下工作:
来源:https://msdn.microsoft.com/en-us/library/dn921892.aspx
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
lf5gs5x23#
在我的SQL Server环境中,我已经安装了SQL RegEx Replace函数,并使用这些函数,我已经实现了你想要的:
结果:
图片来源:https://www.simple-talk.com/sql/t-sql-programming/clr-assembly-regex-functions-for-sql-server-by-example/