如何在 when 条件下使用子字符串
How to use substring in when condition
我们尝试在 when 子句中使用子字符串条件,使用 sql 加载程序,但似乎只接受固定值
LOAD DATA
INFILE 'TO_IMPORT.csv'
APPEND INTO TABLE AUDIOCODE_TRACK_01
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)='4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
SBC_SESSION,
CALL_DIRECTION,
SOURCE_IP,
DESTINATION_IP,
SOURCE_PARTY,
DESTINATION_PARTY,
DURATION,
CALL_START,
CALL_END,
IPGROUP,
INTERFACE_SIP,
PROXY_SIP,
TRANSFERRED
)
这会产生错误:
SQL*Loader-350: Syntax error at line 4.
Expecting quoted string or hex identifier, found "substr".
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)=
根据文档,没有 substr 更糟糕的是它是一个保留字
https://docs.oracle.com/database/121/SUTIL/GUID-4E710755-36CA-4F2D-AFFF-E8A707FF3EBB.htm#SUTIL1448
如果你可以要求数据的数据提供者重新排序字段并将DURATION放在开头。然后你可以使用 range_start:range_end 语法
LOAD WHEN (1:1) = '4'
否则之后还要过滤。但是,当您根据持续时间的第一位数字使用不同的格式时,这可能会导致其他问题。
第三个解决方案是 filters/changes 数据的预处理器。
我们尝试在 when 子句中使用子字符串条件,使用 sql 加载程序,但似乎只接受固定值
LOAD DATA
INFILE 'TO_IMPORT.csv'
APPEND INTO TABLE AUDIOCODE_TRACK_01
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)='4'
FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
TRAILING NULLCOLS
(
SBC_SESSION,
CALL_DIRECTION,
SOURCE_IP,
DESTINATION_IP,
SOURCE_PARTY,
DESTINATION_PARTY,
DURATION,
CALL_START,
CALL_END,
IPGROUP,
INTERFACE_SIP,
PROXY_SIP,
TRANSFERRED
)
这会产生错误:
SQL*Loader-350: Syntax error at line 4.
Expecting quoted string or hex identifier, found "substr".
WHEN INTERFACE_SIP = 'SIP_Sud_BT' and DURATION= substr(:duration,1,1)=
根据文档,没有 substr 更糟糕的是它是一个保留字
https://docs.oracle.com/database/121/SUTIL/GUID-4E710755-36CA-4F2D-AFFF-E8A707FF3EBB.htm#SUTIL1448
如果你可以要求数据的数据提供者重新排序字段并将DURATION放在开头。然后你可以使用 range_start:range_end 语法
LOAD WHEN (1:1) = '4'
否则之后还要过滤。但是,当您根据持续时间的第一位数字使用不同的格式时,这可能会导致其他问题。 第三个解决方案是 filters/changes 数据的预处理器。