如何使用Oracle REGEXP_REPLACE转换notNull调用为SQL标准非空语法
用REGEXP_REPLACE把notNull()格式转成is not null写法
嘿,刚好碰到过类似的需求,我来给你拆解怎么实现:
你需要把字符串里的notNull(字段名)格式,批量替换成(字段名) is not null,用REGEXP_REPLACE完全可以搞定,核心是写对匹配的正则表达式。
具体实现代码(以SQL环境为例)
SELECT REGEXP_REPLACE( 'notNull(devhx_8_other2_name_2) AND notNull(devhx_8_other2_amt)', 'notNull\\(([^)]+)\\)', '(\\1) is not null' ) AS converted_result;
正则逻辑解释
我给你拆解下这个正则的各个部分,方便你理解和调整:
notNull\\(:精准匹配开头的notNull(,因为括号在正则里是特殊符号,所以用双反斜杠转义(不同环境可能只需要单反斜杠,比如某些文本编辑器,但SQL里一般要双反斜杠)([^)]+):这是一个捕获组,[^)]表示匹配除了右括号)之外的任意字符,+表示至少匹配1个字符,这样就能精准把括号里的字段名抓出来\\):匹配结尾的右括号)
替换的时候,\\1代表我们刚才捕获到的字段名,把它放到()里,再拼接is not null,就得到了你要的格式啦。
测试一下这个语句,输出结果就是你想要的:(devhx_8_other2_name_2) is not null AND (devhx_8_other2_amt) is not null
内容的提问来源于stack exchange,提问作者nvacin
相关产品推荐
相关产品推荐

