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 :

[SQL Server] select max ne retourne pas la bonne valeur


Sujet :

Langage SQL

  1. #1
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut [SQL Server] select max ne retourne pas la bonne valeur
    Bonjour,

    J'ai un petit soucie avec une requete sql si j execute la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX (affaire.no_affaire) + 1 as maxAffaireId FROM extBallestrazJ.dbo.affaire where affaire.no_affaire like  '08100012'
    le résultat obtenu est 8100013

    et si j execute la requete suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX (affaire.no_affaire) + 1 as maxAffaireId FROM extBallestrazJ.dbo.affaire where affaire.no_affaire like  '081%'
    le résultat obtenu est 8100012

    de quoi cela peut il provenir ?

    d avance merci

  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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 281
    Points : 4 641
    Points
    4 641
    Par défaut
    salut,

    quel est le type de ta colonne?
    il ne pourrait pas y avoir un espace ou quelque chose dans ce genre dans ta ligne d'enregistrement?

  3. #3
    Membre régulier
    Inscrit en
    Septembre 2006
    Messages
    112
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 112
    Points : 104
    Points
    104
    Par défaut
    Ca serait plutot l'inverse non ?

    dans un cas tu ne met pas de %, donc il te retourne ce que tu as mis dans le like, alors que 081% prend tout ce qui commence par 081...

  4. #4
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Quel est le type de ton champ ? Tu as bien exécuté les 2 requêtes simultanément ?

    Peux-tu nous dire ce que ramène la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT no_affaire 
      FROM extBallestrazJ.dbo.affaire 
     WHERE affaire.no_affaire LIKE  '081%' 
     ORDER BY no_affaire DESC
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  5. #5
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    Citation Envoyé par Xo Voir le message
    Quel est le type de ton champ ? Tu as bien exécuté les 2 requêtes simultanément ?

    Peux-tu nous dire ce que ramène la requête suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT no_affaire 
      FROM extBallestrazJ.dbo.affaire 
     WHERE affaire.no_affaire LIKE  '081%' 
     ORDER BY no_affaire DESC
    salut l execution de ta requête me produit le résultat suivant

    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
     
    081011
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100012
    08100010
    et le type de NO_AFFAIRE est un varchar(40)

  6. #6
    Scorpi0
    Invité(e)
    Par défaut
    Citation Envoyé par *alexandre* Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT MAX (affaire.no_affaire) + 1 as maxAffaireId FROM extBallestrazJ.dbo.affaire where affaire.no_affaire like  '081%'
    le résultat obtenu est 8100012
    amha, le résultat doit plutôt te retourner 081012 plutôt que 8100012, ce qui est est tout a faire normal, car '081011' > '08100012'.
    Passe ta colonne en number si se sont des comparaisons de nombre que tu veux faire, sinon tu ne t'en sortira pas.

  7. #7
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    Citation Envoyé par Scorpi0 Voir le message
    amha, le résultat doit plutôt te retourner 081012 plutôt que 8100012, ce qui est est tout a faire normal, car '081011' > '08100012'.
    +1, tu es sûr des résultats indiqués dans ton premier message ?

    Citation Envoyé par Scorpi0 Voir le message
    Passe ta colonne en number si se sont des comparaisons de nombre que tu veux faire, sinon tu ne t'en sortira pas.
    Ou écris tes requêtes en transtypant des données (cf fonction CAST), si tu ne peux changer ton type de champ, car faire des additions entre VARCHAR et numérique n'est pas prudent.
    "Ce que l'on conçoit bien s'énonce clairement,
    Et les mots pour le dire arrivent aisément." Nicolas Boileau

    "Expliquer empêche de comprendre si cela dispense de chercher"

    Quiz Oracle : venez tester vos connaissances !

    La FAQ Oracle : 138 réponses à vos questions
    Aidez-nous à la compléter

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    2 189
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 189
    Points : 2 336
    Points
    2 336
    Par défaut
    en effet je comprend mieux le résultat mais normalement le compteur devrait marcher car il y a eu une erreur lors de l'insertion de l'élément 081011

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

Discussions similaires

  1. [SQL Server] select max d'un count ?
    Par chess75 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 28/08/2017, 14h38
  2. Fonction SQL IFNULL ne retourne pas la bonne valeur.
    Par Simka1000 dans le forum AS/400
    Réponses: 2
    Dernier message: 15/11/2013, 10h56
  3. Execute_query ne retourne pas les bonnes valeurs
    Par complicated dans le forum Forms
    Réponses: 2
    Dernier message: 23/11/2011, 11h12
  4. Méthode qui ne retourne pas la bonne valeur
    Par clubiste1920 dans le forum Débuter avec Java
    Réponses: 15
    Dernier message: 31/03/2011, 17h14
  5. Réponses: 19
    Dernier message: 12/12/2007, 09h10

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