2013-07-23 14 views
5

Ich habe ein Problem - ich muss jeden einzelnen Satz wie AbC (kleines b, zwischen zwei Großbuchstaben) finden. Zum Beispiel eine Aussage: Little John hatte ein ProBlEm und muss wissen, wie man tHiS macht.Kleinbuchstaben zwischen zwei Großbuchstaben finden - MySQL

Ich muss ProBlEm und THiS auswählen (Sie sehen, BlE und HiS, ein kleiner Brief zwischen zwei Großbuchstaben). Wie kann ich das auswählen?

+0

"Jeder einzelne Satz" wo? Überall in Ihrer Datenbank? – Jon

Antwort

1

In MySQL Sie eine binäre (um sicherzustellen, Groß- und Kleinschreibung) regulären Ausdruck für die Datensätze zu filtern, verwenden können, die ein solches Muster enthalten:

WHERE my_column REGEXP BINARY '[[:upper:]][[:lower:]][[:upper:]]' 

Allerdings ist es nicht so einfach zu extrahieren die Teilzeichenfolgen, die ein solches Muster innerhalb von MySQL entsprechen. Ein kann verwenden ein UDF, z.B. lib_mysqludf_preg, aber es ist wahrscheinlich eine Aufgabe, die besser dazu geeignet ist, innerhalb Ihrer Anwendungsschicht ausgeführt zu werden. In beiden Fällen können reguläre Ausdrücke wiederum dazu beitragen, diese Aufgabe zu vereinfachen.

+0

Beachten Sie diese Warnung im [mysql-Handbuch] (http://dev.mysql.com/doc/refman/5.7/en/regexp.html#operator_regexp): "Die REGEXP- und RLIKE-Operatoren arbeiten byteweise Daher sind sie nicht multibyte-sicher und können bei Multi-Byte-Zeichensätzen zu unerwarteten Ergebnissen führen. " – mabi

+0

Meine Schuld, alles funktioniert! VIELEN DANK! –

+0

Nur ein wörtliches 'e' sollte genug sein. – mabi

0

Zuerst haben Sie die Zeichenfolge aufgeteilt. Suche Please refer this SO Question

und dann jedes retrive Wort wie

substring(word,2) LIKE '[A-Z]' COLLATE latin1_general_cs 
Verwandte Themen