我想替换这个:
“STORES / KOL#10/8/36#1718.00#4165570.00#119539388#PT3624496#9902001#04266#6721#PT3624496-11608091-1-55-STORES / KOL”有了这个:
“STORES / KOL#10#8#36#1718.00#4165570.00#119539388#…
这是一个使用选项 REGEXP_REPLACE 。我们可以尝试定位以下正则表达式模式:
REGEXP_REPLACE
#(\d+)/(\d+)/(\d+)#
然后使用三个捕获组替换,用井号替换路径分隔符。
WITH yourTable AS ( SELECT 'STORES/KOL#10/8/36#1718.00#4165570.00#119539388#PT3624496#9902001#04266#6721#PT3624496-11608091-1-55-STORES/KOL' AS input FROM dual ) SELECT input, REGEXP_REPLACE(input, '#(\d+)/(\d+)/(\d+)#', '#\1#\2#\3#') AS output FROM yourTable;
演示
此正则表达式替换是否足够/准确用于其余数据取决于您从未向我们展示过的数据。
这将取代第二和第三 / 与...的性格 # :
/
#
的 Oracle安装程序 强> :
CREATE TABLE test_data ( value ) AS SELECT '"STORES/KOL#10/8/36#1718.00#4165570.00#119539388#PT3624496#9902001#04266#6721#PT3624496-11608091-1-55-STORES/KOL"' FROM DUAL;
的 询问 强> :
SELECT REGEXP_REPLACE( value, '^(.*?/.*?)/(.*?)/(.*)$', '\1#\2#\3' ) AS replacement FROM test_data
的 产量 强> :
| REPLACEMENT | | :---------------------------------------------------------------------------------------------------------------- | | "STORES/KOL#10#8#36#1718.00#4165570.00#119539388#PT3624496#9902001#04266#6721#PT3624496-11608091-1-55-STORES/KOL" |
分贝<>小提琴 这里
with s as (select '"STORES/KOL#10/8/36#1718.00#4165570.00#119539388#PT3624496#9902001#04266#6721#PT3624496-11608091-1-55-STORES/KOL"' str from dual) select replace(replace(str, '/', '#'), 'STORES#KOL', 'STORES/KOL') result_str_1, regexp_replace(str, '(\d)/', '\1#') result_str_2 from s;