Scinde une chaîne en fonction de l'espace et le caractère délimiteur dans Oracle avec regexp_substr

Je suis en train de découper une chaîne avec regexp_subtr, mais je ne peux pas le faire fonctionner.

Donc, d'abord, j'ai cette requête

select regexp_substr('Helloworld - test!' ,'[[:space:]]-[[:space:]]') from dual

qui très gentiment extraits de mon délimiteur - vide-vide

Mais ensuite, quand j'essaie de fractionner la chaîne avec cette option, il ne fonctionne tout simplement pas.

select regexp_substr('Helloworld - test!' ,'[^[[:space:]]-[[:space:]]]+')from dual

La requête ne retourne rien.

Aide sera très appréciée!
Grâce

  • Qu'est-ce que ur les résultats attendus? seul le délimiteur?
  • Eh bien, le résultat devrait par "Helloworld". Mais il est important que le délimiteur sera " - ", parce que je veux obtenir le reste de la chaîne "test" avec ", sélectionnez regexp_substr('Helloworld - test!' ,'[^[[:space:]]-[[:space:]]]+',1,2)"
  • Oups désolé..je ne suis pas encore. U ne voulez obtenir la valeur avant le délimiteur ou après le délimiteur ou le délimiteur??
  • ok, donc j'ai cette requête, et le résultat que je veux. "sélectionnez regexp_substr('Helloworld - test!' ,'[^[[:space:]]-[[:space:]]]+'), sélectionnez regexp_substr('Helloworld - test!' ,'[^[[:space:]]-[[:space:]]]+',1,2) de double" et les résultats devraient être "Helloworld" comme la colonne 1 et "test" colonne2. Mon problème est que je ne sais pas comment définir le séparateur d'être "de l'espace - de l'espace". il fonctionne parfaitement si je n'utilise que "-", mais j'ai vraiment besoin d'un "espace-de l'espace" comme délimiteur. par exemple "select regexp_substr('Helloworld - test!' ,'[^-]+')de double" fonctionnent très bien, mais je veux ajouter de l'espace(vide) à la delimter
InformationsquelleAutor aleko_vp | 2015-07-27