Ну, ' '
- это не число, так что лучше подумайте, что делать. Я бы предложил NULL
:
SELECT (CASE SUBSTR(GRADE, INSTR(GRADE, ' ') + 1)
WHEN 'Unspecified' THEN NULL
ELSE TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade,
На самом деле, я предпочитаю:
(CASE WHEN GRADE NOT LIKE 'Unspecified%'
THEN TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade
Или, возможно, даже более безопасно:
(CASE WHEN REGEXP_LIKE(GRADE, '^[0-9]+ ')
THEN TO_NUMBER(SUBSTR(GRADE, INSTR(GRADE, ' ') + 1))
END) as Final_Grade