После еще нескольких экспериментов я обнаружил, что это работает нормально:
select *
from xml_tmp
where regexp_like(XMLTYpe.getClobVal(xml_data),'[^[:graph:][:space:]]')
Я думал, что [:graph:]
будет включать все символы верхнего и нижнего регистра, сили без акцентов, но кажется, что он соответствует только без акцента символов.
Дальнейшие эксперименты показывают, что это может работать не во всех случаях.Попробуйте выполнить следующие запросы:
select *
from dual
where regexp_like (unistr('\0090'),'[^[:graph:][:space:]]');
DUMMY
-------
X
(the match succeeded)
Таким образом, похоже, что персонаж, вызывающий у меня проблемы, соответствует этому шаблону.
select *
from dual
where regexp_like ('É','[^[:graph:][:space:]]');
DUMMY
-------
(the match failed)
Когда я пытаюсь выполнить этот запросс акцентированной буквой E как скопированной и вставленной, совпадение не удаётся!Я думаю, все, что я скопировал и вставил, на самом деле отличается.Тьфу, я думаю, что теперь я ненавижу работать с изменением кодировки символов.