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 :

Retirer un chiffre dans une colonne [MySQL-5.7]


Sujet :

Requêtes MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut Retirer un chiffre dans une colonne
    Bonjour à tous,

    Je suis totalement débutant en MySQL, j'ai sur mon ERP ( logiciel de gestion ) un problème de numéro EAN13 ( code barre ), en effet j'ai généré des codes barres avec un caractère en trop ( ehh oui EAN13 c'est 12 chiffres, le dernier étant la clé de validation généré automatiquement) !

    Mes codes barres sont actuellement de ce format 7100000009319 et je souhaiterais retiré le premier 0 juste après le 71 pour toute ma colonne.

    J'ai vue des solutions avec SUBSTR mais je n'ai pas compris grand chose, est-ce qu'une âme charitable pourrais m'aider ?

    Merci d'avance.

    La table se nomme product et la colonne ean13.

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Responsable Données
    Inscrit en
    Janvier 2009
    Messages
    5 198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable Données

    Informations forums :
    Inscription : Janvier 2009
    Messages : 5 198
    Points : 12 774
    Points
    12 774
    Par défaut
    Bonjour,
    Il y a déjà un problème de base, c'est que ton ERP te laisse saisir des codes barres faux. Ou alors tu as eut un bol énorme d'avoir à chaque fois une clé correcte
    Autre question, à moins que cette ERP soit développé en interne, est-ce que tu as vu ça avec son éditeur ? Il est assez souvent mal vu par ce dernier qu'on écrive directement dans la base.
    Quoi qu'il en soit, tu peux utiliser la fonction SUBSTRING() pour récupérer les parties gauches et droites de ton code barre, et d'utiliser le résultat pour mettre à jour la colonne en question.
    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    update product 
    set ean13 = ...
    Where ...
    Je pense qu'il faut filtrer les lignes à mettre à jour, mais là je ne vois pas trop comment.
    Tu ne peux pas te baser sur la longueur du code barre, donc la seule solution qui me vient en tête est de vérifier la clé du code barre, et de ne mettre à jour que les lignes pour lesquelles cette clé est fausse.
    Peut être avec une procédure stockée ?

    Tatayo.

  3. #3
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut à tous.

    Citation Envoyé par andzone23
    ehh oui EAN13 c'est 12 chiffres, le dernier étant la clé de validation généré automatiquement
    Le EAN13 (European Article Numbering à 13 chiffres) comme son nom l'indique est bien à 13 chiffres.
    --> https://fr.wikipedia.org/wiki/EAN_13

    Citation Envoyé par andzone23
    je souhaiterais retirer le premier 0 juste après le 71 pour toute ma colonne.
    Êtes-vous certain que c'est le premier zéro que vous devez supprimer ?
    Et s'il n'y a pas de zéro, comment faites vous ?

    Admettons que cela soit ce que vous cherchez à faire.
    Vous devez utiliser la fonction INSTR().
    --> https://dev.mysql.com/doc/refman/8.0...function_instr

    Ce qui donne sur un exemple :
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    --------------
    START TRANSACTION
    --------------
     
    --------------
    set session collation_connection = "latin1_general_ci"
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `product`
    --------------
     
    --------------
    CREATE TABLE `product`
    (  `id`      integer unsigned NOT NULL auto_increment Primary key,
       `ean13`  varchar(255)      NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
    --------------
     
    --------------
    INSERT INTO `product` (`ean13`) VALUES
      ('7100000009319'),
      ('7120000009319'),
      ('7123000009319'),
      ('7123400009319')
    --------------
     
    --------------
    select  id,
            ean13,
            length(ean13) as longueur
      from  `product`
    --------------
     
    +----+---------------+----------+
    | id | ean13         | longueur |
    +----+---------------+----------+
    |  1 | 7100000009319 |       13 |
    |  2 | 7120000009319 |       13 |
    |  3 | 7123000009319 |       13 |
    |  4 | 7123400009319 |       13 |
    +----+---------------+----------+
    --------------
    update `product` set ean13 = concat(left(`ean13`, instr(`ean13`, '0') - 1), right(`ean13`, 13 - instr(`ean13`, '0')))
    --------------
     
    --------------
    select  id,
            ean13,
            length(ean13) as longueur
      from  `product`
    --------------
     
    +----+--------------+----------+
    | id | ean13        | longueur |
    +----+--------------+----------+
    |  1 | 710000009319 |       12 |
    |  2 | 712000009319 |       12 |
    |  3 | 712300009319 |       12 |
    |  4 | 712340009319 |       12 |
    +----+--------------+----------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Bonjour et merci de vos réponses rapides.

    Effectivement le code EAN13 comportes 13 caractères, en revanche il faut donner seulement 12 caractères au générateur de code-barres pour qu'il puisse générer un code complet comportant la clé de validation (le 13e chiffre).

    Dans mon cas j'ai donné comme masque au générateur de code-barres de l'ERP : 71{00000000000} soit 13 caractères et donc un de trop

    Cela produit une erreur dans l'édition du code-barres puisque la clé n'est pas valide.

    C'est pourquoi je suis sur que le 3e chiffre de chacun de mes codes-barres est un 0 et c'est celui-ci que j'ai besoin de supprimer.

    Je ne sais pas si j’ai été clair, n'hésitez pas à me le dire le cas contraire, en tout cas merci beaucoup du temps que vous prenez à me répondre.

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 380
    Points : 19 062
    Points
    19 062
    Par défaut
    Salut andzone23.

    Avez-vous testé mon exemple ? Avez-vous rencontré des problèmes ?

    Comme indiqué dans mon message précédent, la requête supprime le premier zéro rencontré.

    Cordialement.
    Artemus24.
    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Novembre 2020
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Novembre 2020
    Messages : 11
    Points : 9
    Points
    9
    Par défaut
    Oui ca marche parfaitement, merci beaucoup

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/07/2017, 09h44
  2. Réponses: 2
    Dernier message: 18/03/2015, 10h30
  3. Suite de chiffre dans une colonne
    Par hassan1234 dans le forum Excel
    Réponses: 1
    Dernier message: 08/08/2008, 12h24
  4. Réponses: 4
    Dernier message: 13/07/2007, 14h46
  5. [LG]Retirer les blancs dans une chaine
    Par Andy_24DB dans le forum Langage
    Réponses: 16
    Dernier message: 25/02/2004, 16h30

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