Oracle SQL: Retour à la première ligne de chaîne à l'aide de regexp_substr
Je suis en train de retourner la première ligne de texte à partir d'une zone de texte dans une requête SQL (oracle 11). Le contenu de la zone de texte ressemble à ceci:
X WITHDRAWN
Explanation.
Je veux le retour de la ligne du haut, c'est à dire le X RETIRÉE. Je ne suis pas sûr si je peux préciser à regarder la première ligne de, ou de il suffit de retourner l'ensemble du texte, avant un retour chariot - l'un et l'autre travail.
Je pense que j'ai besoin d'utiliser regexp_substr mais je ne suis pas tout à fait sûr de la syntaxe. J'ai essayé:
regexp_substr(TABLE.TEXT,'^.*$')
mais il ne fonctionne pas, de sorte que toute aide serait grandement appréciée!
EDIT: La solution utilisée:
select regexp_substr(TABLE.TEXT, '[^,]+['||CHR(10)||']') from tab
EDIT: j'ai remarqué que je recevais un mélange de saut de ligne et retour chariot retourné dans ma réponse, j'ai donc utiliser la solution suivante pour renvoyer simplement le texte et aucun des caractères supplémentaires.
select
replace(replace(regexp_substr(TABLE.TEXT, '[^,]+['||CHR(10)||']'),CHR(10),''),CHR(13),'')
from tab
EDIT: Suivant @Ben la réponse, j'ai modifié ma solution à la suivante:
select
initcap(replace(regexp_substr(TABLE.TEXT, '.*$', 1, 1, 'm'),CHR(13),''))
from tab
OriginalL'auteur bawpie | 2013-07-15
Vous devez vous connecter pour publier un commentaire.
Parado de l'expression régulière correspond à tout ce qui n'est pas une virgule plusieurs fois suivi d'un retour chariot. Cela signifie qu'il ne fonctionnera pas pour un saut de ligne ou si il y a une virgule dans le texte.
Oracle prend en charge multi-ligne expressions à l'aide de la
m
match paramètre. Lors de l'utilisation de ce mode,$
correspond à la fin de chaque ligne ainsi que la fin de la chaîne. Vous pouvez l'utiliser pour simplement l'expression massivement à:Qui est correspond à la première occurrence (la première ligne) de la chaîne qui correspond à quoi que ce soit, suivie par la fin de la chaîne, en comptant à partir du premier caractère.
Comme un exemple:
OriginalL'auteur Ben
Vous pouvez essayer d'utiliser directement substring (avec retour chariot - Chr(10) - être symbole de trouver) au lieu des expressions régulières:
OriginalL'auteur Dmitry Bychenko