Ora-00911 Oracle查询中的无效字符

6l7fqoea  于 2023-03-17  发布在  Oracle
关注(0)|答案(2)|浏览(244)

我刚刚尝试了以下查询:

SELECT EXAM_NUMBER, DATE_EXAM, DATE_UNIV
  FROM UNIVERSITY.C_CALENDAR cc2
 WHERE EXAM_NUMBER = 'L'
   AND LAST_FILE = 'OK'
   AND MATTER = 'MATH'
   AND STATE_CODE NOT IN ('FC')
   AND TO_CHAR(DATE_EXAM, 'YYYY-MM-DD') = TO_CHAR(SYSDATE - 2, 'YYYY-MM-DD')
   AND TO_CHAR(DATE_UNIV, 'YYYY-MM-DD HH24:MI:SS') < TO_CHAR(SYSDATE - 5, 'YYYY-MM-DD HH24:MI:SS')
 ORDER BY DATE_EXAM DESC

我总是出错
ORA-00911:无效字符
能帮我一下吗?

ou6hu8tu

ou6hu8tu1#

您的查询看起来很好。您可能在源代码中有一个不可见的字符(但当我从您的问题复制粘贴时,甚至在查看标记时,它都没有显示)。
过滤时不需要使用TO_CHAR(因为它将阻止Oracle使用列上的索引):

SELECT EXAM_NUMBER,
       DATE_EXAM,
       DATE_UNIV
FROM   UNIVERSITY.C_CALENDAR cc2
WHERE  EXAM_NUMBER =  'L'
AND    LAST_FILE   =  'OK'
AND    MATTER      =  'MATH'
AND    STATE_CODE  != 'FC'
AND    DATE_EXAM   >= TRUNC(SYSDATE - 2)
AND    DATE_EXAM   <  TRUNC(SYSDATE - 1)
AND    DATE_UNIV   <  SYSDATE - 5
ORDER BY
       DATE_EXAM DESC

fiddle

a5g8bdjr

a5g8bdjr2#

从sql developer使用时看起来还可以。
如何使用此命令?根据我的经验,如果使用“立即执行”或连接到oracle db的某些其他软件运行此命令时有多余的分号,则会出现此错误。例如,从python程序运行时,oracle返回的命令末尾有分号:
cx_Oracle。数据库错误:ORA-00911:无效字符没有分号就可以了。

相关问题