aide pour une requête sql

Le
Anthony
Soit un champ contenant une série de chiffres

**** ***** *****

les espaces ne sont là que pour la lisibilité.

sous forme de 2 ou 3 chiffres en début de chaîne + 5 chiffres (ceux qui
m'intéresse) + 5 chiffres en fin de chaîne.

est il possible de rechercher tout simplement les numéros correspondant
aux 5 chiffre se situant au centre de la chaîne :

exemple de plusieurs enregistrements :

124 44444 58112 <- ok
12 44444 47889 <- ok
145 55666 44444 <- pas ok

Existe t'il une requête qui me ferait ressortir les enregistrements
contenant 44444 : et me donnerait donc pour résultat les deux premiers
enregistrement cités.

merci de votre aide,

Anthony
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Mickaël Wolff
Le #21916891
Anthony a écrit :

Existe t'il une requête qui me ferait ressortir les enregistrements
contenant 44444 : et me donnerait donc pour résultat les deux premiers
enregistrement cités.



Quelle base de données ?

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Seeking for a position
Anthony
Le #21916881
Mickaël Wolff a écrit :
Anthony a écrit :

Existe t'il une requête qui me ferait ressortir les enregistrements
contenant 44444 : et me donnerait donc pour résultat les deux premiers
enregistrement cités.



Quelle base de données ?



oups mes excuses : sur un serveur mysql > 5

anthony
Mickaël Wolff
Le #21916871
Anthony a écrit :

oups mes excuses : sur un serveur mysql > 5



Dans ce cas tu peux utiliser quelque chose dans ce goût là :

-- pour rechercher les données correspondantes
select * from tbl where field regexp '^d{2,3} d{5} d{5}$' ;

Pour récupérer le nombre central, ce sera un peu plus compliqué,
certainement faut-il utiliser des requêtes imbriquées ou des unions.


--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

Seeking for a position
Sylvain SF
Le #21916861
Anthony a écrit :
Soit un champ contenant une série de chiffres

**** ***** *****

sous forme de 2 ou 3 chiffres en début de chaîne + 5 chiffres (ceux qui
m'intéresse) + 5 chiffres en fin de chaîne.

est il possible de rechercher tout simplement les numéros correspondant
aux 5 chiffre se situant au centre de la chaîne



regex (déjà dit) ou une table mieux définie !

elle contiendrait 3 champs numériques au lieu d'un champ texte
que la réponse serait évidente. peut être trop tard pour cette
table mais pensez-y, stocker des nombres dans des nombres peut
simplifier bien des traitements numériques.

Sylvain.
Antoine Polatouche
Le #21916851
Anthony a écrit :
Mickaël Wolff a écrit :
Anthony a écrit :

Existe t'il une requête qui me ferait ressortir les enregistrements
contenant 44444 : et me donnerait donc pour résultat les deux
premiers enregistrement cités.



Quelle base de données ?



oups mes excuses : sur un serveur mysql > 5

anthony



Ceci devrait faire l'affaire (pas testé)

SELECT field FROM tbl WHERE SUBSTRING( field, -10, 5)='44444';
mdnews
Le #21916841
On Wed, 08 Jul 2009 16:42:54 +0200, Mickaël Wolff

Anthony a écrit :

oups mes excuses : sur un serveur mysql > 5



Dans ce cas tu peux utiliser quelque chose dans ce goût là :

-- pour rechercher les données correspondantes
select * from tbl where field regexp '^d{2,3} d{5} d{5}$' ;



Je crois que dans le post initial, il est indiqué
(les espaces ne sont là que pour la lisibilité.)

Par contre s'il y a toujours 5 chiffres en dernier, il suffit
d'extraire par la droites 10 chiffres, puis les 5 premiers.

Pour récupérer le nombre central, ce sera un peu plus compliqué,
certainement faut-il utiliser des requêtes imbriquées ou des unions.

Anthony
Le #21916831
Antoine Polatouche a écrit :
Anthony a écrit :
Mickaël Wolff a écrit :
Anthony a écrit :

Existe t'il une requête qui me ferait ressortir les enregistrements
contenant 44444 : et me donnerait donc pour résultat les deux
premiers enregistrement cités.


Quelle base de données ?



oups mes excuses : sur un serveur mysql > 5

anthony



Ceci devrait faire l'affaire (pas testé)

SELECT field FROM tbl WHERE SUBSTRING( field, -10, 5)='44444';



merci, je pense opter pour cette solution.

cordialement,

Anthony
Anthony
Le #21916821
Sylvain SF a écrit :
Anthony a écrit :
Soit un champ contenant une série de chiffres

**** ***** *****

sous forme de 2 ou 3 chiffres en début de chaîne + 5 chiffres (ceux
qui m'intéresse) + 5 chiffres en fin de chaîne.

est il possible de rechercher tout simplement les numéros
correspondant aux 5 chiffre se situant au centre de la chaîne



regex (déjà dit) ou une table mieux définie !

elle contiendrait 3 champs numériques au lieu d'un champ texte
que la réponse serait évidente. peut être trop tard pour cette
table mais pensez-y, stocker des nombres dans des nombres peut
simplifier bien des traitements numériques.

Sylvain.



en fait il faudrait modifier cette vieille table pour 1 champ numéro
complet (pour certaines requêtes) + 3 champs... mais lors de la
construction de la base je n'avais pas ces informations (et ces besoins).

cordialement,

Anthony
Publicité
Poster une réponse
Anonyme