还有一个问题是不是数字,只是不能弄清楚。
我的疑问:
SELECT
s.user_id,
date_time,
to_char(Date_time, 'DD-MON-YYYY HH24:MI:SS') timestamp,
( SELECT DECODE
FROM ( SELECT DECODE, code
FROM codelist_decode
WHERE codelist_id = 5029
AND language_code = 001
) t5
WHERE t5.code = s.operation_type)
AS operation,
( SELECT t1.module_name_internal
FROM ( SELECT module_name_internal, module_id
FROM aris_admin_module
) t1
WHERE s.module_id = t1.module_id
)
AS module,
t.session_id,
t.seq_admin_audit_trail,
t.record_id,
( SELECT t4.field_name_e
FROM ( SELECT field_name_e, admin_field_id
FROM aris_admin_table_field
) t4
WHERE admin_field_id = t.field_id)
AS field_name,
( SELECT t2.DECODE
FROM ( SELECT DECODE, code
FROM aris_admin_audit_decode
WHERE field_id = t.field_id
) t2
WHERE t2.code = to_number(t.old_value))
AS org_value_yn,
t.old_value,
( SELECT t3.DECODE
FROM ( SELECT DECODE, code
FROM aris_admin_audit_decode
WHERE field_id = t.field_id
) t3
WHERE t3.code = to_number(t.new_value))
AS new_value_yn
,t.new_value
FROM
system_admin_audit_session s,
system_admin_audit_trail t
WHERE s.session_id = t.session_id
--order by TO_NUMBER('s.session_id','9999999999')
--or order by to_date(s.date_time)
order by 2
上述情况会生成错误:
ORA-01722:编号无效
01722. 00000-"无效号码"
- 原因:指定的号码无效。
- 操作:指定有效数字。
我试过订购其他几个专栏,但问题是一样的。
如果我简化查询,它就能正常工作:
select s.user_id,s.date_time
from ARISG_PROD.system_admin_audit_session s
order by 2 desc
那么,为什么它不承认我的日期时间为日期,并接受订单?
1条答案
按热度按时间mzsu5hc01#
让我们看看我能不能帮到你。通常,当一个字符串和一个数字比较时,会发生这样的错误。
例如,如果s.module_id是varchar2,t1.module_id定义为数字,则语句如下所示
可能是根本原因。
我建议您注解掉主select语句中的所有子查询,然后尝试查询是否发生错误。
一旦错误消失了,你必须分析比较语句,或者把它贴在这里,我们会看到