我得到下面的错误,而试图在informatica运行会话。
ERROR 10/11/2023 2:56:21 PM node02 READER_1_1_1 RR_4035 SQL Error [
ORA-00932: inconsistent datatypes: expected NUMBER got CLOB
我在源限定符中添加了以下SQL查询,以便从源中的CLOB提取数据。
select objectid,db_instance_seq,
REGEXP_SUBSTR(DATA,'\|(RES_GetResData_Public_ScreenPrint.*?)\|(.*?)\|(.*?)\|(.*?)\|',1,column_value,NULL,1) AS TEXT,
REGEXP_SUBSTR(DATA,'\|(RES_GetResData_Public_ScreenPrint.*?)\|(.*?)\|(.*?)\|(.*?)\|',1,column_value,NULL,2) AS SVCFID,
REGEXP_SUBSTR(DATA,'\|(RES_GetResData_Public_ScreenPrint.*?)\|(.*?)\|(.*?)\|(.*?)\|',1,column_value,NULL,3) AS AX_TYP_CD,
REGEXP_SUBSTR(DATA,'\|(RES_GetResData_Public_ScreenPrint.*?)\|(.*?)\|(.*?)\|(.*?)\|',1,column_value,NULL,4) AS VALUE
from TEST
cross join table(
cast(
multiset(
select level
from dual
where DATA LIKE '%RES_GetResData_Public_ScreenPrint%'
connect by level <= regexp_count(
DATA,
'\|(RES_GetResData_Public_ScreenPrint.*?)\|(.*?)\|(.*?)\|(.*?)\|'
)
)
as sys.odcinumberlist
)
)
1条答案
按热度按时间v7pvogib1#
除了正则表达式,你可以使用简单的字符串函数(这要快得多)和递归子查询因子子句:
其中,对于样本数据:
输出:
| objectID|数据库_序列号|TEXT1| TEXT2| TEXT3| TEXT4|
| --|--|--|--|--|--|
| 1 | 1 |RES_GetResData_Public_ScreenPrint - AAAAA| BBBB|中交|DDDD|
| 1 | 1 |RES_GetResData_Public_ScreenPrint -EEE| F| * 空 *| H|
fiddle