Oracle 12 में आपको यह करने में सक्षम होना चाहिए:
SELECT tenantId
FROM your_table t
LEFT OUTER JOIN
XMLTABLE(
'/PayLoad/.'
PASSING XMLTYPE( t.your_xml_column )
COLUMNS cdata CLOB PATH '.'
) x
ON ( 1 = 1 )
LEFT OUTER JOIN
JSON_TABLE(
x.cdata,
'$'
COLUMNS ( tenantId VARCHAR2(10) PATH '$.order.tenantId' )
) j
ON ( 1 = 1 );
(अगले कुछ घंटों के लिए 11g पर होने के कारण परीक्षण नहीं किया गया)
Oracle 11 पर:
SELECT REGEXP_SUBSTR( x.cdata, '"tenantId":"((\\"|[^"])*)"', 1, 1, NULL, 1 ) AS tenantId
FROM your_table t
LEFT OUTER JOIN
XMLTABLE(
'/PayLoad/.'
PASSING XMLTYPE( t.your_xml_column )
COLUMNS cdata CLOB PATH '.'
) x
ON ( 1 = 1 )
या (यदि JSON स्ट्रिंग XML की किसी अन्य शाखा में नहीं होगी) तो आप बस इसका उपयोग कर सकते हैं:
SELECT REGEXP_SUBSTR(
your_xml_column,
'"tenantId":"((\\"|[^"])*)"',
1,
1,
NULL,
1
) AS tenantId
FROM your_table