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

Langage SQL Discussion :

Séquence SQL problème


Sujet :

Langage SQL

  1. #1
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 39
    Points
    39
    Par défaut Séquence SQL problème
    j'ai un probleme avec le numéro de commande d'un formulaire,il est affiché automatiquement suite au chargement de formulaire le numéro de commande est affiché comme suit num commande:012,ce qui me paraît le numéro de commande est enregistré sur 3 chiffre et généré avec table séquence mais lorsque je crée une séquence avec le champ start with 000 et increment by 1, il élémine les deux 0 tout a gauche et affiche la sequence comme suit
    1
    2
    3
    .
    .
    .
    mais je cherche un affichage comme ça
    001
    002
    003
    .
    .
    je ne trouve pas le type convenable a utiliser pour cet format de numéro et s'incrément automatiquemnt?

  2. #2
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    S'il y a des zéros devant, c'est que ce n'est pas un nombre, mais une chaîne de caractères.

    Selon ton SGBD il y a tout un tas de manières différentes d'obtenir une chaîne ainsi formatée à partir d'un nombre.

    Cependant, le mieux, c'est de générer cette chaîne au moment de l'affichage, dans l'application cliente, car c'est pas le rôle du SGBD de gérer les problématiques d'affichage.

    Voici par exemple avec SQL Server 2017 et la fonction "format" :
    Code sql : 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
     
    with nombre (n)
    as
    (
    	select 1
    	union all
    	select 2
    	union all
    	select 42
    	union all
    	select 987
    	union all
    	select 1234
    )
    select n, format(n, '000')
    from nombre
    Sortie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    n           
    ----------- ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
    1           001
    2           002
    42          042
    987         987
    1234        1234
     
    (5*lignes affectées)
    On notera que si le nombre dépasse la longueur du format, ça plante pas.

    Avec la plupart des autres SGBD il faudra concaténer '000' avec le nombre, puis prendre les 3 derniers caractères.

    Mais dans tous les cas, je le répète, ce formatage doit plutôt être fait dans le programme appelant.
    On ne jouit bien que de ce qu’on partage.

  3. #3
    Nouveau membre du Club
    Étudiant
    Inscrit en
    Novembre 2009
    Messages
    74
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2009
    Messages : 74
    Points : 39
    Points
    39
    Par défaut
    autrement dit je charche à créeune Sequence commençant par 000 and Increment by 1

  4. #4
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Et que n'as-tu pas compris dans ma réponse ?
    On ne jouit bien que de ce qu’on partage.

  5. #5
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Customer Success Manager @Vertica
    Inscrit en
    Septembre 2008
    Messages
    8 452
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Customer Success Manager @Vertica
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 452
    Points : 17 814
    Points
    17 814
    Par défaut
    Citation Envoyé par StringBuilder Voir le message
    Avec la plupart des autres SGBD il faudra concaténer '000' avec le nombre, puis prendre les 3 derniers caractères.
    Cette solution du concaténer des 0 et faire un RIGHT, je ne l'ai jamais vu ailleurs que pour SQL-Server.
    La mauvaise foi autour de ce SGBD quand même, autant SQLPro on a l'habitude mais il a trouvé un apprenti, il paraît qu'ils vont toujours par deux (mais je m'égare).

  6. #6
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 146
    Points : 7 388
    Points
    7 388
    Billets dans le blog
    1
    Par défaut
    Hmmm, ah oui, tiens, tu as raison. J'avais complètement oublié le LPAD() d'Oracle. Fonctionne aussi peut-être sur MySQL et PostgreSQL.
    On ne jouit bien que de ce qu’on partage.

Discussions similaires

  1. Access/SQL : Problème avec Count
    Par Taurëndil dans le forum Langage SQL
    Réponses: 2
    Dernier message: 13/01/2005, 16h49
  2. [SQL] problème pour faire ma requete
    Par seb.briet dans le forum Langage SQL
    Réponses: 4
    Dernier message: 29/12/2004, 17h51
  3. [PL/SQL] problème de trigger
    Par Chuck67 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/12/2004, 00h17
  4. [SQL] problème avec les date et les group By
    Par Stef784ever dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2004, 10h18
  5. [Debutant][Join Sql] problème de join
    Par ultimax dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/11/2004, 13h01

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