Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

aide pour une requête sql

8 réponses
Avatar
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

8 réponses

Avatar
Mickaël Wolff
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 <http://lupusmic.org/pro/>
Avatar
Anthony
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
Avatar
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}$' ;

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.

<http://dev.mysql.com/doc/refman/5.0/fr/regexp.html>

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

Seeking for a position <http://lupusmic.org/pro/>
Avatar
Sylvain SF
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.
Avatar
Antoine Polatouche
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';
Avatar
mdnews
On Wed, 08 Jul 2009 16:42:54 +0200, Mickaël Wolff
wrote:

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.

<http://dev.mysql.com/doc/refman/5.0/fr/regexp.html>
Avatar
Anthony
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
Avatar
Anthony
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