2016-02-27 50 views
-1

我需要从包含在表格列中的数据字符串中提取数字。如何使用Oracle SQL从一长串数据中提取特定数字?

例字符串:

<strong>Customer Name</strong>: Hit - julaifnaf afbafbaf Caraballo Pichardo vs PICHARDO ALBERTO<br /> 
<strong>Address</strong>: NA - abdcinfainaf 42982542542 vs xx<br /> 
<strong>Country of citizenship</strong>: NA<br /> 
<strong>Country of residency</strong>: NA<br /> 
<strong>Date of birth</strong>: NA - xx vs Nov-72<br /> 
<strong>Place of birth</strong>: NA<br /> 
<strong>Identification Number</strong>: **1**<br /> 
<strong>emailDetails</strong>: <br/> 
<b>Subject: </b>abcdejnfanfa <br/> 
<b>Sent To: </b>[email protected]<br/> 

在上面的例子串我需要提取1数。 记录的长度和记录的位置有所不同, 但要提取的数字总是在Identification Number</strong>:之后和<br /><strong>之前。

我可以使用什么函数来提取这些数据?

回答

0
SELECT TO_NUMBER(
     REGEXP_SUBSTR(
      column_name, 
      '<strong>Identification Number</strong>:.*?(\d+).*?<br />', 
      1, 
      1, 
      NULL, 
      1 
     ) 
     ) AS id_number 
FROM table_name; 
+0

非常感谢你:) –

0

试试这个:

select 
    regexp_replace(column_name,'.*<strong>Identification Number</strong>:[^>\d]*(\d+)[^>\d]*<br\s*/>.*', '\1', 1, 0, 'inm') as id 
from html; 

PS它不是很可靠的解决方案,但因为你不能解析使用正则表达式的任何 HTML。

输出:

  ID 
----------- 
      1 
+0

非常感谢你:) –

相关问题