PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WEBDEV 2024 → [Requete avec filtre "commence par"]
[Requete avec filtre "commence par"]
Débuté par Danysworld, 19 nov. 2019 16:45 - 3 réponses
Membre enregistré
13 messages
Posté le 19 novembre 2019 - 16:45
Bonjour,

je souhaite effectuer une requête (qui me parait ultra basique!!!) utilisant les expressions régulières mais je ne parviens pas a obtenir une syntaxe correcte KRRR!

J'ai une liste de produits enormissime et j'aimerais, en cliquant sur des regroupement de lettre, genre [ABC][DEF][GHI]...filtrer les résultats uniquement sur les produits commençant par le groupe de lettre que j'ai sélectionné.
Par exemple, en cliquant sur [DEF], il me filtre mes résultats uniquement avec les produits commençant par D ou par E ou par F.
Je pensais faire une requête de la sorte :
SELECT * FROM produits WHERE libproduits LIKE '^[D-F]%'


Mais ça ne fonctionne pas!!
Une idée?
Merci par avance
Membre enregistré
324 messages
Popularité : +21 (51 votes)
Posté le 20 novembre 2019 - 09:13
Select * from produits where libproduits like '^[D-F]%'
^ Represents any character not in the brackets


Le ^ devant le [D-F]% dit à la requête qu'elle doit renvoyer TOUT ce qui ne commence pas par une lettre entre "D et F"

Il faut enlever le ^ dans le requête je dirais au premier à bord.

Sur le site du W3Schools voilà l'exemple correspondant à votre requêtem pour toutes les villes commençant par b, s ou p

SELECT * FROM Customers
WHERE City LIKE '[bsp]%';
Message modifié, 20 novembre 2019 - 09:14
Membre enregistré
505 messages
Popularité : +18 (18 votes)
Posté le 20 novembre 2019 - 10:08
Bonjour,

En SQL, LIKE ne prend pas en charge les expressions régulières.

Il faut voir du côté des opérateurs REGEXP ou RLIKE ou ~, ou encore la fonction REGEXP_LIKE.
Lien utile dans la doc en ligne : https://doc.pcsoft.fr/fr-FR/?2034005&name=Fonctions_SQL_Editeur#SQL_REGEXP
:)
Membre enregistré
13 messages
Posté le 21 novembre 2019 - 15:08
Bonjour,

merci pour vos elements de reponses.
J'ai bien patogé avec les expressions régulières dans la requete et du coup j'ai fais differemment, juste un filtre au niveau de l'affichage des resultats de la sorte :
HFiltreComprisEntre(REQ_MaRequete,MonLib,sLettreMin,hSéparateurBorne,sLettreMax+hValMax)


je place ce filtre juste après l’exécution de ma requête qui me sort tous les résultats sans filtre et j'applique donc le filtre au moment de l'affichage.
ça fonctionne :)