Search code examples
sqloracle-databasesyntax-error

Ora-00911 Invalid Character in Oracle Query


I've just try the following query:

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

I always get error

ORA-00911: invalid character

could you help me?


Solution

  • Your query appears to be fine. You may have an invisible character in the source code (but it is not showing when I copy-paste from your question, even looking at the mark-up).

    You do not need to use TO_CHAR when filtering (as it will prevent Oracle from using an index on the column):

    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