如何在条件中使用子字符串

问题描述 投票:1回答:1

我们尝试使用SQL loader在when子句中使用子字符串条件,但似乎只接受固定值

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)=
sql-loader
1个回答
0
投票

根据文档,没有更糟糕的是保留字

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' 

否则,您必须随后进行过滤。但是,如果您根据持续时间的第一位数使用不同的格式,则可能导致其他问题。第三个解决方案是预处理器,用于过滤/更改数据。

© www.soinside.com 2019 - 2024. All rights reserved.