Aller au contenu

9 > 10 (?) : Problème de Requete MySQL


Sujets conseillés

Posté

Bonjour à tous ,

Voila le problème , je souhaite créer un identifiant de la forme 22007-(NumId) ou 72007-(NumID) dans une de mes tables.

Dans mon code je dois repérer le prochain numéro à créer lorsque je crée un nouveau login.

Pour cela , je fais une recherche du genre :

SELECT MAX(login)as max FROM `listeinscription` where login LIKE "22007-%";

(le nombre 22007 représente un critère de tri pour moi).

Cette méthode fonctionne bien , sauf que lorsque j'arrive à 22007-10 , il me répond que le maximum est 22007-9.

J'ai vérifier dans la table et effectivement c'est le cas :wacko:

Quelqu'un aurait une idée du problème ?

Posté (modifié)

Et qu'est-ce que j'ai comme solution pour éviter le problème ?

(Ouais , je sais , la passer en Numérique , mais j'peux point.... v_v)

Modifié par Dart
Posté

Fait un replace dans ta requete du '-' par '' et convertis la chaine restante en numérique, juste le temps de la requête :)

Posté

Merci de ton aide ....

C'est une solution intéressante mais un peu compliqué (en fait surtout pour faire le deuxième replace et tout remettre en ordre).

En tout cas je vais regarder ça .

Merci encore

Posté

Et en plus tu n'as pas besoin du 'convert' car la conversion se fait implicitement :)

Ce qui donne :

Select max(replace(login ,'-','')) from `listeinscription` where login LIKE "22007-%";

Posté (modifié)

Dart,

Tu peux aussi faire ça :

SELECT max(0 + right(login, length(login) - 6)) as max FROM `listeinscription` where login LIKE "22007-%";

Explication :

- je vire les 6 caractères de gauche (22007-) - à adapter s'il y a parfois plus de 5 caractère avant le '-'.

- j'ajoute 0 (ça convertit la chaîne en nombre

- je prends le max

Sinon, tu ne peux pas transformer ton 22007-9 en 22007-00009 ?

Ca résoudrait aussi ton problème, le tri se ferait correctement.

M

Modifié par marcb
Posté

le mieux restant quand même de formater tes nombres (clés) avec 2 octets, soit 09 puis 10, comme cela pas de problème

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...