通过SQL查询

时间:2017-03-14 21:30:13

标签: oracle plsql

如何使用sql查询获取特定的数据模式?

我有一个字符串,其数据类似于"有效数据:emp no - 123 emp age - 23 emp type - M。"

所以在这里,我想要emp age中的任何内容,即23。字符串格式相同。我不想根据位置获得emp age因为它可以改变,有没有其他方法可以获得emp age

查询是否会在字符串中找到emp age标记,然后在该标记后面的三个位置获取emp age值?

3 个答案:

答案 0 :(得分:1)

如果文字始终相同,您可以尝试以下内容。

SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(ColumnA, 'emp age - ', -1), ' ', 1) AS Age 
FROM table;

答案 1 :(得分:1)

Oracle内置正则表达式函数。如果,正如您所说,格式始终相同,提取第二组数字将为您提供所需的结果:

SQL> select regexp_substr('Valid data: emp no - 123 emp age - 23 emp type - M.'
   2                   , '[0-9]+', 1, 2) as emp_age
   3  from dual
   4  /
EM
--
23

SQL> 

文档中介绍了这些功能。 Find out more

答案 2 :(得分:-1)

使用内置的正则表达式函数。