我在列中有一些值,如:
"这是测试$ ABC变量。"
我想将所有变量定义更新到一个以下:
"这是测试$ ABC $变量。"
如何编写此更新语句?不知何故,我无法管理。
答案 0 :(得分:0)
你只想要replace()
吗?
update t
set col = replace(col, '$ABC', '$ABC$')
where col like '%$ABC%';
答案 1 :(得分:0)
不幸的是,我不擅长正则表达式,所以我的这种糟糕的尝试可能会被更聪明的东西所取代。期待看到它!
SQL> with test as
2 (select 'This is test $ABC variables' col from dual union
3 select 'Stackoverflow says $DEF is so cool' from dual
4 )
5 select
6 col,
7 regexp_replace(col, '\$\w+', regexp_substr(col, '\$\w+') || '$') result
8 from test;
COL RESULT
---------------------------------- ----------------------------------------
Stackoverflow says $DEF is so cool Stackoverflow says $DEF$ is so cool
This is test $ABC variables This is test $ABC$ variables
SQL>
答案 2 :(得分:0)
您可以使用此REGEXP
查询。 '\$(\w+)'
中的括号捕获$
\1
后面的字词
SELECT REGEXP_REPLACE (
'This is test $ABC variables.This is a second variable $variable2.I have 100$',
'\$(\w+)',
'$\1$')
FROM DUAL;
<强> O / P:强>
This is test $ABC$ variables.This is a second variable $variable2$.I have 100$