REGEXP_REPLACE 表达问题
REGEXP_REPLACE expression issue
我在下面得到了一些 sql 脚本来删除单词之间的单词,但它会找到最后一次出现的 my (/hide) 而不是第一次出现的。需要帮助才能按预期获得输出。谢谢。
select regexp_replace('(hide)it(/hide)should be show(hide)my(/hide) text',
'^\(hide\).*\(/hide\)', '') "TESTING"
from dual;
我预计输出将是:
should be show text
但实际输出是:
text
如果我的数据位于数据类型为 clob 的列之一。目前我使用下面的脚本来 select。例如我的 table 是 testing_table 列 desc_str 和 data_type 的 clob 其中包含值 '(hide)it(/hide)should be show(hide)my (/隐藏) 文本';
select trim(to_char(regexp_replace(desc_str,'^\(hide\).*\(/hide\)',''))) as desc
from testing_table
where OOE_FP_SS_ID = $id;
根据你的例子:
SQL> with test (col) as
2 (select '(hide)it(/hide)should be show(hide)my(/hide) text' from dual)
3 select regexp_replace(col, '\(hide\)\w+\(/hide\)', '') result
4 from test;
RESULT
-------------------
should be show text
SQL>
[编辑:CLOB]
您要求的是 CLOB。这是一个例子:
SQL> create table test (desc_str clob);
Table created.
SQL> insert into test values ('(hide)it(/hide)should be show(hide)my(/hide) text');
1 row created.
SQL> select regexp_replace(desc_str, '\(hide\)\w+\(/hide\)', '') result from test;
RESULT
--------------------------------------------------------------------------------
should be show text
SQL>
另一个例子:
SQL> with test (desc_str) as
2 (select '(hide)ItemId: 4334(/hide)|(hide)Description Item - SubType:(/hide) Name - Item|(irow)Price Value: MYR 1,668' from dual)
3 select regexp_replace(desc_str, '\(hide\).+?\(/hide\)', '') result from test;
^
RESULT | this question mark was missing
------------------------------------------
| Name - Item|(irow)Price Value: MYR 1,668
SQL>
我在下面得到了一些 sql 脚本来删除单词之间的单词,但它会找到最后一次出现的 my (/hide) 而不是第一次出现的。需要帮助才能按预期获得输出。谢谢。
select regexp_replace('(hide)it(/hide)should be show(hide)my(/hide) text',
'^\(hide\).*\(/hide\)', '') "TESTING"
from dual;
我预计输出将是:
should be show text
但实际输出是:
text
如果我的数据位于数据类型为 clob 的列之一。目前我使用下面的脚本来 select。例如我的 table 是 testing_table 列 desc_str 和 data_type 的 clob 其中包含值 '(hide)it(/hide)should be show(hide)my (/隐藏) 文本';
select trim(to_char(regexp_replace(desc_str,'^\(hide\).*\(/hide\)',''))) as desc
from testing_table
where OOE_FP_SS_ID = $id;
根据你的例子:
SQL> with test (col) as
2 (select '(hide)it(/hide)should be show(hide)my(/hide) text' from dual)
3 select regexp_replace(col, '\(hide\)\w+\(/hide\)', '') result
4 from test;
RESULT
-------------------
should be show text
SQL>
[编辑:CLOB]
您要求的是 CLOB。这是一个例子:
SQL> create table test (desc_str clob);
Table created.
SQL> insert into test values ('(hide)it(/hide)should be show(hide)my(/hide) text');
1 row created.
SQL> select regexp_replace(desc_str, '\(hide\)\w+\(/hide\)', '') result from test;
RESULT
--------------------------------------------------------------------------------
should be show text
SQL>
另一个例子:
SQL> with test (desc_str) as
2 (select '(hide)ItemId: 4334(/hide)|(hide)Description Item - SubType:(/hide) Name - Item|(irow)Price Value: MYR 1,668' from dual)
3 select regexp_replace(desc_str, '\(hide\).+?\(/hide\)', '') result from test;
^
RESULT | this question mark was missing
------------------------------------------
| Name - Item|(irow)Price Value: MYR 1,668
SQL>