Ich möchte das längste Wort in einem Varchar2 (in einer Zeichenfolge) in einer Oracle-Abfrage finden. In einigen Situationen würde ich die Zeichenfolge in separate Wörter in einer Tabelle aufteilen, dann könnten Aggregationsfunktionen sie lösen (zB wenn ich max (Länge (mein_Feld) habe, kann ich die längsten Wörter aufspüren.)Finden Sie das längste Wort in einer Zeichenfolge mit Oracle SQL
Aber in dieser Fall ich also nicht diesen Luxus. ich brauche das längste Wort in einem String ohne Aggregation zu berechnen.
ich einen Weg REGEXP_REPLACE verwenden gefunden Worte zu finden, das länger als N Zeichen. Und das ist nicht schlecht. Aber ich . keine Art und Weise mit regex oder anderen Funktionen sieht das längste Wort finden
Hier ist eine vereinfachte Version von dem, was ich verwenden Worte mehr als 4 Zeichen zu finden:
select
regexp_replace(
' a cd efg hijk lmnop qrst uvw xy z '
, '([^[:alnum:]][[:alnum:]]{1,3}[^[:alnum:]])'
, ' '
, 1
, 0
) x
from dual;
Aber wie könnte ich nur die längsten Wörter zurückgeben?
Ich kann nur daran denken Teilstring zu verwenden, denn für Regex ist es schwer. – FreedomPride
Die Aufspaltung der Zeichenfolge in Wörter kann Ihre einzige Option sein, wenn Sie planen, dies ohne PL/SQL zu tun. –
Das ist unklar. Wenn mehr als ein Wort am längsten gebunden sind, möchten Sie sie alle zurückgeben? Was ist, wenn Ihre Zeichenfolge alle Wörter der gleichen Länge enthält, sagen wir 7 Zeichen - wie schlagen Sie vor, sie "zurückzugeben", wenn nicht in separaten Zeilen? Also musst du die Saite nicht auseinander brechen? Und was meinst du mit "nicht diesen Luxus"? Welcher Luxus? – mathguy