-3
votes

En utilisant SQL. Extraire des nombres de virgule séparés de la chaîne 'Header | N1000 | E1001 | N1002 | E1003 | N1004 | N1005'

select REGEXP_REPLACE(REGEXP_REPLACE('HEADER|N1000|E1001|N1002|E1003|N1004|N1005', '.*?E(\d+)', '\1,'), ',?\.*$', '') from dual

0 commentaires

3 Réponses :


0
votes

mise à jour forte>

en fonction des modifications apportées à la question, la réponse originale n'est pas valide. Au lieu de cela, la solution est considérablement plus complexe, à l'aide d'une requête hiérarchique pour extraire tous les nombres de la chaîne, puis listagg code> pour remettre une liste de numéros extraits de chaque chaîne. Pour extraire tous les chiffres, nous utilisons cette requête: p> xxx pré>

sortie (pour les nouveaux données d'échantillonnage): p> xxx pré>

pour sélectionner Seuls les nombres commençant par E code>, nous modifions la requête pour remplacer le [fr] code> dans le regexp_substr code> expressions avec juste E code > c.-à-d. p> xxx pré>

sortie: p>

1001,1003


7 commentaires

Les commentaires ne sont pas pour une discussion prolongée ni des sessions de débogage; Cette conversation a été Archivé en chat .


@nick j'ai ajouté les nouveaux ensembles de données .Pour quelle requête doit satisfaire


@Codygray OP n'a pas assez de réputation pour visiter une salle de discussion ... Je suppose que c'est pourquoi l'option "Voulez-vous déplacer cette discussion à la discussion" n'a jamais été offert.


@Amarenderreddyjali J'ai mis à jour ma réponse. Il devrait être beaucoup plus robuste maintenant (et fonctionne pour tous les exemples que vous avez donnés)


@nick merci mais je pense utiliser votre réponse précédente et '' 'Sélectionnez * à partir de (Sélectionnez Regexp_replace (Regexp_replace (' En-tête | N1000 | E1001 | N1002 | E1005 | N1004 | N1005 | E1005 | E \ d +) ',' \ 1, '),',? \ |. *. * '$', '') comme maman de double) où maman aime '% | e%' ''


@ Nick pouvez-vous répondre à ce Stackoverflow.com/questions/58410091/...


@NICK Comment pouvons-nous regrouper 17h hier à 17h aujourd'hui des records à la date d'aujourd'hui Stackoverflow.com/q/58497919/12212199 ? SEM = 2



0
votes

Je ne sais pas quel DBMS vous utilisez, mais voici une façon de le faire dans Postgres: xxx

SQL FIDDLE


0 commentaires

0
votes

Autant que j'ai compris la question, vous souhaitez extraire des sous-chaînes à partir de N à partir de la chaîne, vous pouvez essayer de suivre (puis vous pouvez fusionner la sortie séparée par des virgules si nécessaire)

Sélectionnez Remplacer (valeur, 'n', '') de string_split ('Header | N1000 | E1001 | N1002 | E1003 | N1004 | N1005 |', '|') où valeur comme 'n%'

sortie:

1000 1002 1004 1005


0 commentaires