如何在oracle中将长数据转换为char || ORA-00932:数据类型不一致:预期的CHAR长

时间:2018-10-02 08:05:04

标签: sql oracle sqldatatypes

我正在尝试执行以下查询,该查询基于少量条件来获取不同的数据。在这里,我在cookie字段上使用了类似运算符,而我的cookie字段的数据类型很长。

select * from (
               select to_char(audit_logs.REQUEST_TIME, 'dd/mm/yyyy HH24:mm:ss') as event_time,
                    audit_logs.CLIENT_REQUEST as client_request,
                    audit_logs.RESPONSE_CODE as responsecode,
                    audit_logs.SIZEOFOBJECT as sizeofobject,
                    audit_logs.COOKIES as cookies,
                    audit_logs.ENV as env,
                    audit_logs.USERID as user_id,
                    audit_logs.POST_DATA as post_data,
                    audit_logs.AUTHSCHEME as authscheme,
                    audit_logs.AUTHMARKET as authmarket,
                    audit_logs.X_REQUESTED_WITH as x_requested_with,
                    audit_logs.METHOD_TYPE as method_type,
                    audit_logs.HOSTNAME as hostname,
                    audit_logs.SESSION_COOKIES as session_cookies,
                    audit_logs.X_FORWARDED_FOR as x_forwarded_for,
                    audit_logs.USER_AGENT as user_agent,
                    audit_logs.GEOIP_COUNTRY_CODE as country_code
               from audit_logs
               where
                    REQUEST_TIME >= to_date(:fromdate,'dd/mm/yyyy')
                    and REQUEST_TIME <= to_date(:todate,'dd/mm/yyyy HH24:MI:SS')
                    and COOKIES LIKE '%TANID=%'
               order by REQUEST_TIME DESC)
where ROWNUM <= :recordslimit
order by event_time DESC;

在执行上述查询时,我遇到以下错误:

ORA-00932: inconsistent datatypes: expected CHAR got LONG
00932. 00000 -  "inconsistent datatypes: expected %s got %s"

有人可以解决该问题吗?

注意:由于我的数据库中包含大量数据,因此更改数据类型将是一项耗时的工作。

1 个答案:

答案 0 :(得分:1)

您正在查询中定义三个命名参数-fromdate,todate和recordslimit。该查询在fromdate和todate参数上使用to_date,因此它们应为char数据类型。因此,在这些参数上传递实际值时,请检查您正在使用的实际数据类型。可能还会有其他捕获物,但这是我唯一想到的捕获物。