【发布时间】:2015-05-10 12:04:34
【问题描述】:
我有以下查询
SQL> select * from RTECS_ABBREV ra
2 where instr(trim('100 mmol/plate (-S9)'), ra.abbrev) > 0;
ABBREV DEFINITION
------------------------------ --------------------------------------------------------------------------------
mmo Mutation in Micro-organism
mmol millimole
mol mole
S second
SQL>
我想得到以下结果
SQL> select * from RTECS_ABBREV ra
2 where instr(trim('100 mmol/plate (-S9)'), ra.abbrev) > 0;
ABBREV DEFINITION
------------------------------ --------------------------------------------------------------------------------
mmol millimole
S second
SQL>
因为“mmo”和“mol”是“mmol”字的一部分
更多 ....
看到我有以下数据:
with abbr as
(
select 'mmo' as abbrev from dual union
select 'mmol' as abbrev from dual union
select 'mol' as abbrev from dual union
select 'ug' as abbrev from dual union
select 'mg' as abbrev from dual union
select 'ppm' as abbrev from dual union
select 'nmol' as abbrev from dual union
select 'nm' as abbrev from dual union
select 'ol' as abbrev from dual union
select 'S' as abbrev from dual
),
main_data as
(
select '24231' as id_, '10 ug/plate (-S9)' as data_ from dual union
select '24232' as id_, '1 pph' as data_ from dual union
select '24233' as id_, '100 mmol/plate (-S9)' as data_ from dual union
select '24234' as id_, '100 mmol/plate (-S9)' as data_ from dual union
select '24235' as id_, '1 pph' as data_ from dual union
select '24236' as id_, '19300 nmol/L (-S9)' as data_ from dual union
select '24237' as id_, '800 mg/L' as data_ from dual union
select '24238' as id_, '600 ppm/2H-C (-S9)' as data_ from dual union
select '24239' as id_, '500 mg/L (-S9)' as data_ from dual union
select '24240' as id_, '2000 ppm (-S9)' as data_ from dual union
select '24241' as id_, '100 mmol/plate (-S9)' as data_ from dual union
select '24242' as id_, '1 pph (-S9)' as data_ from dual union
select '24243' as id_, 'ihl 2700 ppm' as data_ from dual union
select '24244' as id_, 'par 10 mmol/L' as data_ from dual union
select '24245' as id_, 'mul 1 pph/8H-C' as data_ from dual
)
select * from main_data
我需要用另一个字符串(例如:“test”)替换“main_data.data_”中出现的任何匹配单词“abbr.abbrev”。
例如,对于“100 mmol/plate (-S9)”,我需要:
100 test/plate (-test9) but not,
100 testl/plate (-test9) or 100 testol/plate (-test9)
所以规则似乎是,替换“abbr.abbrev”中的整个单词匹配,如果字符串介于 () 之间,则替换任何匹配的字符
【问题讨论】:
-
我不明白。 “mmo”在字符串中。为什么不退货?请解释您使用的规则。
-
能否请您解释一下规则并发布表格和插入语句。不清楚你在问什么。
标签: sql regex oracle substring