正则处理sql语法转换

原创
2023/01/31 12:33
阅读数 132

原sql

and ISJSON( A.SalesNames ) > 0   AND JSON_VALUE(LOWER(A.SalesName) , '$.name') = @saleName 
and ISJSON( A.SalesNames ) > 0   AND JSON_VALUE(LOWER(A.bcd), '$.bcd') = @bcd 

 需要转换为

and ISJSON( A.SalesNames ) > 0   AND LOWER(A.SalesName)::jsonb @>'{"name":"@saleName"}'  
and ISJSON( A.SalesNames ) > 0   AND LOWER(A.bcd)::jsonb @>'{"bcd":"@bcd"}' 

用代码实现,粗略估计至少几十行,并且容易出错。用正则替换,1行代码解决:

正则表达式:

json_value(\((((.*?)\s{0,},\s{0,}'\$.)(.*?)')(\)\s{0,}(=\s{0,}(\@\S+))))

替换字符串:$4::jsonb @>'{"$5":"$8"}'

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
0 评论
0 收藏
0
分享
返回顶部
顶部