从Oracle中的字符串中提取变量

时间:2016-02-15 14:38:26

标签: sql oracle

我的数据库中有“描述”列。 此列包含各种产品说明。 在每种产品的描述中都提到了价格。

格式是'苹果包含10欧元/月含药袋','西红柿每包9欧元/包含袋'等等。

我想提取这些产品的价格,即'10','9'等。

select SUBSTR(DESCRIPTION, 0, INSTR(DESCRIPTION, 'EUR/month') - 1)
  from PRODUCT_DESCRIPTION
 where PRODUCT IN ('Apples', 'Tomatos');

我使用了上面的脚本,但我得到的结果是:'苹果10','西红柿9'等等。

你知道我应该使用什么条件才能获得成本吗?

2 个答案:

答案 0 :(得分:0)

如果这始终是结构,那么只需取出数字:

select regexp_substr(description, '[0-9.]+')
from product_description

答案 1 :(得分:0)

您可以使用regexp_replace删除其余部分并使用分组。

select regexp_replace(DESCRIPTION, '.*\s+(\d+)\s*EUR.*','\1') 
-- You are using the grouping of regexp, and reuse the number that has been found
from PRODUCT_DESCRIPTION