2

我有一列的值为,

公司详情

Id=18, company=3,org=[objectId=18, objectName=Library], parentOrg=null 
Id=10009,company=company=[companyId=3, companyName=CONE],org=[objectId=18, objectName=Library], parentOrg=[objectId=10001, objectName=Cyb 1]
Id=10008, company=3,org=[objectId=10005, objectName=Cyb 5], parentOrg=[objectId=10004, objectName=Cyb 4]
Id=10007, company=3,org=[objectId=10004, objectName=Cyb 4], parentOrg=[objectId=10003, objectName=Cyb 3], 

上列的数据类型为“VARCHAR2”。

现在我想获取上列中所有对象 ID 的值,如下所示。

OrgId
----
18
1004
1005
4

1 回答 1

3

如果您确定对象 id 是第三个值,则可以使用 regex_substr 来执行此操作。

SELECT REGEXP_SUBSTR (column, '\d+', 1, 3)
  FROM table;

您也可以使用 regexp_replace,以防它始终不是第三个值。

SELECT REGEXP_REPLACE (column, '(org=\[objectId=)(\d+)|(.)', '\2')
  FROM table;
于 2013-08-07T16:37:08.137 回答