Я пытаюсь найти данные с акцентированными символами. Я пробовал:regexp для всех символов с акцентом в Oracle
select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_tmp.xml_data), unistr('\0090'))
И это работает. Он находит все записи, в которых поле данных XML содержит É. Проблема в том, что он соответствует только верхнему регистру E с акцентом. Я попытался написать более общий запрос, чтобы найти ВСЕ данные с акцентированными гласными (a, e, i, o, u, upper и lowercase с любыми акцентами) с использованием классов эквивалентности. Я хотел, чтобы регулярное выражение соответствовало только акцентированных гласных, но я не уверен, как его получить, поскольку классы эквивалентности, такие как [[=e=]]
, соответствуют все e's (с или без акцентов).
Кроме того, это на самом деле не работает:
select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_data),'É');
(с использованием Oracle 10g)
Это странно; вся причина '[: graph:]' и его ilk заключается в том, чтобы включать символы, отличные от ASCII. Это полезно знать! – ruakh
@ruakh: Я никогда раньше не использовал '[: graph:]', поэтому я не уверен, что это так, как это * предполагается * работать, или если это просто какой-то странный экологический настрой, вызывающий его поведение таким образом. – FrustratedWithFormsDesigner
Странно, что я пробовал 'regexp_like (xml_data, '[\ x80- \ xFF]')' и ничего не возвращал. Я думал, что это сработало бы наверняка. – FrustratedWithFormsDesigner