IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes PostgreSQL Discussion :

Trouver la position du texte dans une chaine de caractère


Sujet :

Requêtes PostgreSQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2018
    Messages : 56
    Par défaut Trouver la position du texte dans une chaine de caractère
    Bonjour à tous!
    Je souhaiterai extraire d'un champs 10 chiffres qui se trouvent après 3 lettres spécifiques par exemple j'ai la chaîne suivante :
    "ergkjfi ABC 1234567890 qreg egr" et je souhaiterai extraire 1234567890

    J'ai trouvé les formules suivantes CHARINDEX et LOCATE, mais je suis dans DATASTUDIO et lors de la création d'un champs, ces formules ne sont pas reconnues.
    Je peux utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SUBSTR(ma_chaine,position_debut,10)
    Mais je ne vois pas comment calculer position_debut, ici il est = à 8 mais c'est un exemple et il n'y aura jamais le même nombre de caractères avant ABC.

    Avez-vous une astuce svp ?
    Merci beaucoup.
    Belle journée
    Chloé

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Bonjour,
    Avec un Expression régulière ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT regexp_matches('ergkjfi ABC 1234567890 qreg egr', '[0-9]+') as nombre;

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2018
    Messages : 56
    Par défaut
    Bonjour,
    non cette formule n'est pas reconnue non plus .
    Je ne peux utiliser que ces formules : https://cloud.google.com/bigquery/docs/reference/legacy-sql

  4. #4
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Je l'ai écrit en français, mais en anglais d'après votre doc ça passe :

    Nom : 2021-09-24_11-40.png
Affichages : 485
Taille : 27,2 Ko

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2018
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 29
    Localisation : France, Aisne (Picardie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2018
    Messages : 56
    Par défaut
    Cette fonction en effet fonctionne.
    Par contre ça me donne le premier chiffre qu'il trouve dans mon commentaire.

    En fait mon champs c'est un commentaire qui comporte énormément d'infos (chiffres / lettres) du coup le numéro que je souhaite extraire je n'ai aucune idée de son endroit et il ne sera jamais au même endroit.
    Mais par contre il y aura toujours 3 lettres (exemple NCF) devant le numéro souhaité
    Imaginons le commentaire : "ref4582 2 colis lundi 2 mars NCF 0452478452 dfge az 4h"
    Je veux ressortir le numéro après NCF = 0452478452

    Je suis débutante en SQL et en plus avec data studio j'ai l'air plus limité que du SQL normal

    Merci beaucoup pour votre aide
    Chloé

  6. #6
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 506
    Par défaut
    Pour la recherche plein texte les expressions régulière sont très puissante.
    Je vous conseilles la lecture d'un tuto ou l'autre.

    Je vous ai donné la fonction dont vous aviez besoin, il faut alors construire le pattern qui correspond à votre demande.

    le site https://regex101.com/ est un formidable outil, vous permettant de tester vos expression et de par là même de les construires.

    Voici ce que moi j'écrirais, suivant votre demande :

    Trois caractères (majuscule ou minuscule) - suivi d'un espace - capturer les 10 chiffres qui suivent (la capture se fait via les parenthèse).

    [a-zA-z]{3} \s ([0-9]{10})

    Donc ceci fonctionne pour les deux exemples donnés.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT regexp_match('ergkjfi ABC 1234567890 qreg egr', '[a-zA-z]{3}\s([0-9]{10})') as nombre;
     
     
    SELECT regexp_match('ref4582 2 colis lundi 2 mars NCF 0452478452 dfge az 4h', '[a-zA-z]{3}\s([0-9]{10})') as nombre;

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Rechercher un texte dans une chaine de caractère
    Par fossi69 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 15/02/2016, 20h46
  2. Réponses: 2
    Dernier message: 09/09/2015, 20h41
  3. Réponses: 3
    Dernier message: 23/01/2012, 14h50
  4. [XL-2003] Trouver la 1ere lettre majuscule dans une chaine de caractères
    Par ptitrault dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/10/2009, 10h59
  5. Recherche de texte dans une chaine de caractères
    Par julien20vt dans le forum Oracle
    Réponses: 7
    Dernier message: 19/12/2006, 10h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo