Oracle中如何用正则表达式将字符串替换为多段带引号字符串?
解决Oracle中字符串转换问题
你需要的不是删除逗号,而是将逗号替换为',',再给整个字符串前后添加单引号,用普通的REPLACE函数就能实现,不需要复杂正则:
SELECT '''' || REPLACE('Cat,Dog', ',', ''',''') || '''' FROM DUAL;
逻辑说明:
REPLACE('Cat,Dog', ',', ''',''')将原字符串中的逗号替换为',',得到Cat','Dog- 在SQL中,两个连续的单引号
''会被解析为一个实际的单引号,所以用''''拼接在前后,最终得到目标结果'Cat','Dog'
如果要处理包含多个元素的字符串(比如'Cat,Dog,Bird'),这个方法同样适用,会输出'Cat','Dog','Bird'。
如果一定要用正则表达式,也可以用REGEXP_REPLACE,不过该写法更适合固定数量元素的场景:
SELECT REGEXP_REPLACE('Cat,Dog', '([^,]+),([^,]+)', '''\1'',''\2''') FROM DUAL;
内容的提问来源于stack exchange,提问作者Henry
相关产品推荐
相关产品推荐

