gpt4 book ai didi

oracle - 出现错误-ORA-01858:在期望数字的位置找到了非数字字符

转载 作者:行者123 更新时间:2023-12-04 02:47:36 54 4
gpt4 key购买 nike

我在以下sql中收到错误:


ORA-01858:在期望数字的地方找到了非数字字符


SELECT   c.contract_num,
CASE
WHEN ( MAX (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 32
THEN
'Monthly'
WHEN ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) >= 32
AND ( MAX (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD'))
- MIN (
TO_CHAR (TO_DATE (c.event_dt, 'YYYY-MM-DD'), 'MMDD')))
/ COUNT (c.event_occurrence) < 91
THEN
'Quarterley'
ELSE
'Yearly'
END
FROM ps_ca_bp_events c
GROUP BY c.contract_num;

最佳答案

您收到的错误是由于在已经是日期的列上执行TO_DATE,并且正在使用与nls_date_format参数[1]不同的格式掩码,或者是因为event_occurrence列包含的数据不是数字。

您需要a)更正您的查询,以使其不在日期列上使用TO_DATE,并且b)如果event_occurrence应该只是数字,则更正您的数据。

并修复该列的数据类型,以确保您只能存储数字。


[1]当您执行TO_DATE(date_column, non_default_format_mask)时,Oracle会执行以下操作:
TO_DATE(TO_CHAR(date_column, nls_date_format), non_default_format_mask)

通常,默认的nls_date_format参数设置为dd-MON-yy,因此在您的查询中,可能发生的是将日期列转换为dd-MON-yy格式的字符串,然后您将使用MMDD格式将其还原为日期。该字符串不是这种格式,因此会出现错误。

关于oracle - 出现错误-ORA-01858:在期望数字的位置找到了非数字字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29852389/

54 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com