如何使用sql查询获取特定的数据模式?
我有一个字符串,其数据类似于"有效数据:emp no - 123 emp age - 23 emp type - M。"
所以在这里,我想要emp age
中的任何内容,即23
。字符串格式相同。我不想根据位置获得emp age
因为它可以改变,有没有其他方法可以获得emp age
?
查询是否会在字符串中找到emp age
标记,然后在该标记后面的三个位置获取emp age
值?
答案 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)
使用内置的正则表达式函数。