Plsql 获取包含多个数字的字符串中的第一个数字?

Plsql 获取包含多个数字的字符串中的第一个数字?,plsql,oracle11g,Plsql,Oracle11g,我有一个字符串(Oracle 11g),可以是这样的: WORD1:10.20 WORD2:1112.30 这两个数字的大小可以不同(可以是几十个、几百个或几千个)-尽管单词是固定的-我需要的是提取第一个数字(包括小数部分)。在上面的例子中,它将是“10.20” 我怎样才能做到这一点?基本上我需要的是获得“WORD1”和“WORD2”之间的整数。如果单词没有变化,则需要获得从第8个字符到第一个'WORD2'出现的子字符串: select substr( str, 8, instr(str, 'W

我有一个字符串(Oracle 11g),可以是这样的:

WORD1:10.20 WORD2:1112.30

这两个数字的大小可以不同(可以是几十个、几百个或几千个)-尽管单词是固定的-我需要的是提取第一个数字(包括小数部分)。在上面的例子中,它将是“10.20”


我怎样才能做到这一点?基本上我需要的是获得“WORD1”和“WORD2”之间的整数。

如果单词没有变化,则需要获得从第8个字符到第一个
'WORD2'
出现的子字符串:

select substr( str, 8, instr(str, 'WORD2') -9)
from (
        select 'WORD1: 10.20 WORD2: 1112.30' str
        from dual
     )

这是一个糟糕的数据库设计的标志。如果需要字符串中的数字,则应将其存储为数字。可能您必须为此添加/更改一些表。是否会出现输入字符串中只有一个单词的情况?这将需要特殊的处理……其独特的优点是只使用标准字符串函数(没有正则表达式)。至少在Oracle中,这将是一个显著的性能增强。