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

MySQL Discussion :

Incrémenter un varchar


Sujet :

MySQL

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 34
    Points : 18
    Points
    18
    Par défaut Incrémenter un varchar
    Bonjour je voudrais savoir comment incrémenter un varchar de type "1234-1", de maniere a ce qu'il soit incrémenté comme ceci = "1234-2".
    Il y a surement moyen d'extraire le dernier caractere de la chaine et de le convertir en int l'incrementer et le reconvertir mais je voulais savoir si il n'existait pas une solution plus simple?

    Merci d'avance

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    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 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    J'ose espérer que vous n'utilisez pas cette valeur comme clé primaire de votre table !

    Décomposons le problème en jouant notamment avec les fonctions de chaînes de caractères de MySQL...

    1) En quelle position se trouve le caractère de séparation ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT LOCATE('-', la_colonne) AS position
    FROM la_table
    2) Prenons tous les caractères jusqu'à cette position
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT LEFT(la_colonne, LOCATE('-', la_colonne)) AS debut_chaine
    FROM la_table
    3) Prenons les derniers caractères de la chaîne après la position
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT RIGHT(la_colonne, LENGTH(la_colonne) - LOCATE('-', la_colonne)) AS fin_chaine
    FROM la_table
    4) Transformons la fin de la chaîne en nombre et ajoutons 1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT CAST(RIGHT(la_colonne, LENGTH(la_colonne) - LOCATE('-', la_colonne)) AS UNSIGNED) + 1 AS nouvelle_fin_num
    FROM la_table
    5) Rassemblons le tout
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT la_colonne, 
    	CONCAT(LEFT(la_colonne, LOCATE('-', la_colonne)), CAST(RIGHT(la_colonne, LENGTH(la_colonne) - LOCATE('-', la_colonne)) AS UNSIGNED) + 1) AS nouvelle_chaine
    FROM la_table
    À tester
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    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 !

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2014
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2014
    Messages : 34
    Points : 18
    Points
    18
    Par défaut
    Non pas de soucis pour la clé j'ai un id auto-incrémenté,tous ce qu'il y a de plus classique
    Merci pour cette réponse ca marche !

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

Discussions similaires

  1. conversion d'un varchar en int pour incrémentation
    Par Nikimizi dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 13/02/2014, 15h19
  2. VARCHAR contenant une quote '
    Par tonyskn dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/05/2003, 19h21
  3. [débutant][xsl]incrémenter une variable
    Par guitalca dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 01/04/2003, 15h19
  4. ca ne fonctionne pas (generateur auto-incrémentant)
    Par tripper.dim dans le forum SQL
    Réponses: 7
    Dernier message: 26/11/2002, 00h10
  5. Post incrémentation?
    Par Defrag dans le forum C
    Réponses: 4
    Dernier message: 08/10/2002, 10h36

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