【发布时间】:2018-10-02 08:05:04
【问题描述】:
我正在尝试执行以下查询,该查询根据几个标准获取不同的数据。在这里,我在 cookie 字段上使用了 like 运算符,并且我的 cookies 字段是长数据类型。
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"
有人可以请教如何解决这个问题。
注意:更改数据类型将是一项耗时的工作,因为我的数据库有大量数据。
【问题讨论】:
-
您不能将 LIKE 与 LONG 列一起使用。我建议您更改表格并将 LONG 列转换为 CLOB 列。使用
CREATE TABLE ... AS SELECT ..., TO_LOB(COOKIES) FROM audit_logs使用更改的数据类型创建新表... -
LONG的值是否曾经超过 32K? oracle-developer.net/display.php?id=430
标签: sql oracle sqldatatypes