Sql查询获取子字符串中的值

时间:2013-08-07 16:13:53

标签: sql oracle plsql

我的列值为,

CompanyDetails

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

1 个答案:

答案 0 :(得分:3)

如果您确定object id是第3个值,则可以使用regex_substr执行此操作。

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

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

SELECT REGEXP_REPLACE (column, '(org=\[objectId=)(\d+)|(.)', '\2')
  FROM table;