Oracle查询报ORA-00911无效字符错误,请求协助排查
排查ORA-00911: invalid character错误
针对你的Oracle查询报错,按以下步骤排查:
- 替换HTML转义字符:你的SQL中使用了
<这个HTML转义符号,Oracle无法识别,必须替换为实际的小于号<。 - 检查隐藏特殊字符:如果替换后仍报错,可能是SQL中存在不可见的特殊字符(比如复制粘贴时带入的全角空格、非标准换行符等)。可以将SQL复制到纯文本编辑器(如Notepad++),开启"显示所有字符"功能,排查并删除这类无效字符。
修正后的SQL示例:
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
额外优化建议:尽量避免用TO_CHAR转换日期后比较,直接用日期类型运算更高效,还能利用字段索引。比如:
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 DATE_EXAM >= TRUNC(SYSDATE) - 2 AND DATE_EXAM < TRUNC(SYSDATE) - 1 AND DATE_UNIV < SYSDATE - 5 ORDER BY DATE_EXAM DESC
内容的提问来源于stack exchange,提问作者Andy
相关产品推荐
相关产品推荐

