2013-08-07 96 views
2

我有值作爲一列內獲得的值,SQL查詢的子

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 
+0

爲了澄清,是一個稱爲CompanyDetails表的行中的'org'一列,或不每行表示爲字段CompanyDetails單個值? –

+0

org是表格中的一個列名稱CompanyDetails –

回答

3

如果你確信對象的id是第3個值,你可以使用regex_substr做到這一點。

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

您也可以使用regexp_replace,以防萬一它不是第三個值。

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

非常感謝您,它對我很有幫助 –