sql LIKE multi valeurs

WRInaute accro
Bonjour,

J'ai un petit prob de requête sql !

Je voudrais extraire tous les membres ayant une date de naissance comprise en 1970...1975 (par ex)
inutile de proposer le BETWEEN car mon champ "naissance" est une chaine de car. du style "01/12/2009" donc j'avais dans l'idée de faire dans le genre:
Code:
SELECT * FROM `matable` WHERE `naissance` LIKE ( '%1970|1971|1972|1973|1974|1975'  )

plutôt que de faire une requête à rallonge genre:
Code:
SELECT * FROM `matable` WHERE `naissance` LIKE ( '%1970' ) OR `naissance` LIKE ( '%1971' ) OR `naissance` LIKE ( '%1972' ) OR `naissance` LIKE ( '%1973' ) OR `naissance` LIKE ( '%1974' ) OR `naissance` LIKE ( '%1975' )

Pouvez-vous m'aider?
Merci
 
WRInaute accro
Si toutes tes dates sont construites de la même mannière, je te conseille davantage d'utiliser RIGHT() en mySQL pour récupérer les 4 derniers caractères et de faire une comparaison stricte pour la suite (pas besoin de like %%).
 
WRInaute impliqué
Pour moi le problème vient de la conception de ta table :mrgreen:
Je ne vois absolument aucun interet de stocker une date sous forme de chaine de caractères. Il n'y en a aucun et ça ne se fait pas, tout simplement.

Donc change ta table, au lieu de te casser la tête sur un problème qui n'en est pas un. Surtout que les dates aujourd'hui, les SGBD savent très bien faire et intégrent leur propre gestion des dates. C'est pas comme si on voulait par exemple stocker une donnée comme une adresse IP, où là la plupart des SGBD ne savent pas gérer eux-même.
 
WRInaute accro
Merci pour votre aide et je suis bien d'accord avec toi mais le site a été construite ainsi donc je fais avec !

Je ne vais pas m'amuser à modifier la nature d'un champ qui va casser toute une prog dessus ;)

Mais c'est bon, j'ai trouvé une solution qui marche.
Pas forcement la meilleur mais elle marche :)
 
WRInaute impliqué
De la même manière, si la programmation avait été bien faite, il n'y aurait pas plus de 2-3 lignes à modifier :mrgreen:
 
Discussions similaires
Haut