Сравнение только первых символов:
SQL> SELECT dbms_lob.substr(alien_body_part, 4000, 1) body_part,
2 CASE
3 WHEN dbms_lob.substr(alien_body_part, 4000, 1)
4 IN ('TC', 'NC') THEN
5 0
6 ELSE
7 1
8 END is_nc_or_tc
9 FROM t;
BODY_PART IS_NC_OR_TC
---------------------- -----------
1
TC 0
NC 0
Extended Mandible 1
В этом случае, поскольку длина одной стороны сравнения составляет всего 2 символа, сравнения первых 3 символов будет достаточно (так как NCLOB будет равен 'TC ', только если длина его составляет 2 символа, и эти символы, очевидно, равны' TC ').
Кроме того, ни CASE, ни IN не являются причиной ошибки здесь (вы не можете напрямую сравнивать CLOB / NCLOBв SQL), рассмотрим:
SQL> select * from t where alien_body_part = 'TC';
select * from t where alien_body_part = 'TC'
ORA-00932: inconsistent datatypes: expected - got NCLOB