【问题标题】:How to convert long data to char in oracle || ORA-00932: inconsistent datatypes: expected CHAR got LONGoracle中如何将长数据转换为char || ORA-00932: 不一致的数据类型: 预期的 CHAR 得到了 LONG
【发布时间】: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"

有人可以请教如何解决这个问题。

注意:更改数据类型将是一项耗时的工作,因为我的数据库有大量数据。

【问题讨论】:

标签: sql oracle sqldatatypes


【解决方案1】:

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

【讨论】:

  • 错误来自COOKIES LIKE '%TANID=%', because cookies`是数据类型long;不是来自那些字符串/日期转换。
猜你喜欢
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
  • 2014-12-28
  • 1970-01-01
  • 2017-02-28
  • 1970-01-01
  • 2020-12-13
  • 2021-06-22
相关资源
最近更新 更多