regexp für alle Zeichen mit Akzent in Oracle
Ich bin auf der Suche nach Daten, die Zeichen mit Akzent. Ich hab das versucht:
select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_tmp.xml_data), unistr('\0090'))
Und es funktioniert. Es findet alle Datensätze, in denen die XML-Daten-Feld enthält É. Das problem ist, dass es nur Spiele die Großbuchstaben E mit einem Akzent. Ich habe versucht zu schreiben, eine mehr generische Abfrage ALLER Daten mit betonten vokalen (a, e, i, o, u, groß-und Kleinbuchstaben, mit allen Akzenten) mit äquivalenz-Klassen. Ich wollte einen regulären Ausdruck für nur betonten vokalen, aber ich bin mir nicht sicher, wie um es zu bekommen, als äquivalenz-Klassen wie [[=e=]]
match alle e s (mit oder ohne Akzente).
Auch dies nicht wirklich funktionieren:
select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_data),'É');
(Oracle 10g)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wie etwa
? Beseitigen alle Vokale unbetont, bevor Sie die
REGEXP_LIKE
.(Es ist hässlich, ich weiß. Aber es sollte funktionieren.)
Nach etwas mehr zu Experimentieren, habe ich festgestellt, dass dies scheint zu funktionieren ok:
Ich hatte gedacht, dass
[:graph:]
umfassen würde alle groß-und Kleinschreibung, mit oder ohne Akzente, aber es scheint, dass es nur Spiele unbetont Zeichen.Weitere Experimente zeigt, dass dies möglicherweise nicht in allen Fällen funktionieren. Versuchen Sie diese Abfragen:
So sieht es aus wie das Zeichen, das wurde mir Mühe, entspricht diesem Muster.
Wenn ich versuche, führen Sie diese Abfrage mit dem Akzent E wie kopiert und eingefügt, das match abbricht! Ich denke, das was ich kopiert und eingefügt ist tatsächlich anders. Ugh, ich denke, dass ich jetzt hasse arbeiten mit wechselnden Zeichen-Kodierungen.
[:graph:]
und seinesgleichen ist, damit auch nicht-ASCII-Zeichen. Das ist gut zu wissen![:graph:]
vor also ich bin mir nicht sicher, ob dies ist, wie es ist soll zu arbeiten, oder wenn es nur einige seltsame Umgebung, was es auf diese Weise zu Verhalten...regexp_like(xml_data,'[\x80-\xFF]')
und wieder nichts. Ich dachte, das würde gearbeitet haben, sicher.[\x80-\xFF]
von hier: stackoverflow.com/questions/2236475/... )