我有一个配置单元表,其中一列有一个字符串数据类型,它实际上存储了一个json对象。
我试图在该表上触发select,但我只想替换json中的一个元素。例如,假设对于特定的配置单元行,包含json的列的值为:-
{
"employee": {
"name": "sonoo",
"salary": 56000,
"married": true
}
}
现在我想用null(或空白等)替换元素$.employee.name的值(当前值是“sonoo”)。因此select语句应该返回以下内容
{
"employee": {
"name": null,
"salary": 56000,
"married": true
}
}
有什么办法吗?
1条答案
按热度按时间uplii1fm1#
如果您不想解析所有的json元组并重新组装json,那么这就是使用sing的解决方案
regex_replace
:结果:
正则表达式中的第一组描述了要替换的值之前的所有内容:
(\\"employee\\":\\s*\\{\\s*\\"name\\":\\s*)
-指:\\"employee\\":
-“雇员”:字面意思是,\\s*
-任意数量的空间\\{
-{字符\\s*
-任意数量的空间\\"name\\":
-“姓名”:\\s*
-任意数量的空间为什么第一个组被描述得如此详细,包括员工密钥?为了确保只替换employee嵌套结构中的name值,而不替换其他名称(可以在其他嵌套结构中)。
secong group是要替换的双引号字符串:
(\\".*\\")
第三组是第二组之后的所有其他组:([\\S\\s]*)
-任意数量的空格或非空格字符。如果json不包含换行符,\n则只需使用(.*)即可,请自己测试它因此,regexp匹配整个json,由三个组组成。你要用
'$1null$3'
-第一组、空组和第三组连接在一起。换言之,第二个组将替换为null,其他所有组保持原样。