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 MySQL Discussion :

Opération complexe sur colonne varchar


Sujet :

Requêtes MySQL

  1. #1
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut Opération complexe sur colonne varchar
    Bonjour,
    J'ai une colonne VARCHAR qui contient de mauvais numéros d'identification.
    Ceux-ci devraient être entièrement numériques mais certains sont incomplets et complétés à gauches par divers caractères non numériques.
    Je voudrais supprimer la partie non numérique et garder la partie numérique.

    Un exemple :
    '---4643762' doit devenir '4643762'

    La requête devrait donc être du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE veaux
    SET NUM_NAT_PERE = {extraction de la partie numérique}
    WHERE NUM_NAT_PERE REGEXP '^-+[[:digit:]]+$'
    Je n'ai pas trouvé dans les fonctions de chaîne de caractères ce qui pourrait m'aider à extraire la partie numérique.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  2. #2
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    salut Cinephil,

    tu as beaucoup de caractères différents avant tes nombres?

  3. #3
    Membre chevronné
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Mars 2006
    Messages
    400
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Mars 2006
    Messages : 400
    Par défaut
    Une solution serait de :
    1. remplacer les caractères numériques par des espaces
    2. supprimer les espaces à droite
    3. prendre la partie droite du champ : taille totale - taille de la chaine obtenue précédemment


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    RIGHT(NUM_NAT_PERE,
     LENGTH(NUM_NAT_PERE)-
     LENGTH(RTRIM(
      REPLACE(
       REPLACE(
        REPLACE(
         REPLACE(
          REPLACE(
           REPLACE(
            REPLACE(
             REPLACE(
              REPLACE(
               REPLACE(NUM_NAT_PERE,'0',' '),
               '1',' '),
              '2',' '),
             '3',' '),
            '4',' '),
           '5',' '),
          '6',' '),
         '7',' '),
        '8',' '),
       '9',' ')
      )
     )
    )
    Cette expression n'est probablement pas optimisée, mais devrait fonctionner.

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Citation Envoyé par Cybher Voir le message
    salut Cinephil,

    tu as beaucoup de caractères différents avant tes nombres?
    Non. C'est plutôt une suite de caractères non-alphabétiques identiques.

    J'ai aussi des cas du type 'BE123456' que je veux conserver pour les regrouper plus tard sous une autre appellation et ça je sais faire.

    Pour le moment, j'ai modifié la plupart des cas qui m'ennuient à la main car ils ne sont pas très nombreux mais j'ai une autre table à traiter de la même manière donc si je pouvais le faire automatiquement ce serait mieux.

    A jeremya :
    J'ai l'impression que ta formule va garder un nombre de caractères égal à la longueur de la chaîne moins la longueur des chiffres alors que je veux garder les n chiffres situés à droite de la chaîne.

    Je testerai quand même, la méthode est intéressante.

    Merci.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Expert confirmé Avatar de Cybher
    Homme Profil pro
    Consultant réseaux et sécurité
    Inscrit en
    Mai 2005
    Messages
    3 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Consultant réseaux et sécurité
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Par défaut
    si ce sont des caractères identiques, peut être tout simplement un replace de ton caractère par rien?
    après tout dépend du nombre de caractères différents à traiter

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Bon sang mais c'est bien sûr ! (Raymond Souplex dans "Les 5 dernières minutes", feuilleton des années 1960)

    Merci, je pense que ça va me simplifier le problème pour l'autre table, même si actuellement je termine le traitement de la première à coup de WHERE NUM_NAT_PERE REGEXP 'quelque chose parfois assez compliqué'.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

Discussions similaires

  1. Opération numérique sur colonne VARCHAR
    Par calagan99 dans le forum SQL
    Réponses: 1
    Dernier message: 04/04/2014, 08h38
  2. Opération complexe sur un tableau
    Par laloune dans le forum Langage
    Réponses: 6
    Dernier message: 02/02/2012, 23h19
  3. [TPW] Unité Complex2 : Opérations élémentaires sur les nombres complexes
    Par forum dans le forum Codes sources à télécharger
    Réponses: 0
    Dernier message: 04/12/2011, 11h44
  4. question requete complexe sur champ varchar
    Par pazgal dans le forum Langage SQL
    Réponses: 20
    Dernier message: 14/10/2008, 17h09
  5. Réponses: 15
    Dernier message: 17/03/2008, 17h00

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