Accueil > Forum > > > > pb SELECT avec LIKE
pb SELECT avec LIKE
vendredi 16 décembre 2005 à 10:57:18 |
pb SELECT avec LIKE

Stubbornman
|
Salut à tous, quelqu'un peut-il m'expliquer pourquoi cette requête ne fonctionne pas: SELECT * FROM table WHERE colonne LIKE '[a-e]%' OR colonne LIKE '[A-E]%' ORDER BY colonne; alors que celle-ci donne le résultat attendu: SELECT * FROM table WHERE colonne LIKE 'a%' OR colonne LIKE 'b%' OR colonne LIKE 'c%' OR colonne LIKE 'd%' ORcolonne LIKE 'e%' ORDER BY colonne; Merci d'avance.
|
|
lundi 19 décembre 2005 à 10:21:09 |
Re : pb SELECT avec LIKE

bigondas
|
SELECT * FROM table WHERE colonne LIKE '[A-E]%' ORDER BY colonne ASC essai celle là ton pbm viens peut être du faire k'il y a deux fois la même instruction dans ta requête, SQL ne tiens pas compte des majuscules et des minuscules il me semble 
|
|
lundi 19 décembre 2005 à 18:41:36 |
Re : pb SELECT avec LIKE

aieeeuuuuu
|
salut
je n'ai jamais vu utiliser autre chose que les % et les _ comme metacaracteres avec un LIKE...
Je ne pense pas que le [a-e] soit valide.
si tu veux faire ce genre de requete, je pense que tu devras utiliser les expressions regulieres.
il me semble qu'elles sont implementée nativement sous oracle, et il est possible de les utiliser sous SQL server aussi, mais pas directement.
quel est ton SGBDR ?
|
|
mardi 27 décembre 2005 à 18:07:39 |
Re : pb SELECT avec LIKE

Stubbornman
|
J'ai cherché sur différents sites dont sqlfr.com et mysql.com mais pas moyen de trouver de solution à mon problème. Et le problème justement je ne le connais pas... Mon idée était de créer une requête plus simple (et plus compréhensible par la même occasion) en remplaçant une instuction de 3 lignes par une plus simple qui tient sur une ligne: de : "SELECT * FROM table WHERE colonne LIKE 'a%' OR colonne LIKE 'b%' OR colonne LIKE 'c%' OR colonne LIKE 'd%' OR colonne LIKE 'e%' OR colonne LIKE 'A%' OR colonne LIKE 'B%' OR colonne LIKE 'C%' OR colonne LIKE 'D%' OR colonne LIKE 'E%';" passer à : "SELECT * FROM table WHERE colonne LIKE '[a-e]%' OR colonne LIKE '[A-E]%';" Le problème, c'est qu'il n'y a pas de problème. Dans le premier cas, la base me retourne des élèments, dans le second cas aucun élèment retourné, et aucune erreur non plus. Pour info j'utilise hsqldb, mais à part ça, je ne sais pas ce qu'il convient d'indiquer pour faciliter votre compréhension... J'ai testé en remplaçant les ' par " mais la ça me retourne une erreur (je n'ai pas oublié de mettre \" et non ", evidemment ):
SQLException : Column not found: [A-E]% in statement [SELECT * FROM recipes WHERE title LIKE "[A-E]%"]
SQLState: S0022
VendorError: -28 Dans ce cas, c'est un problème de syntaxe de la requête, mais je ne sais pas où... Ensuite j'ai essayé avec REGEXP de la façon suivante: "SELECT * FROM table WHERE colonne REGEXP '^[a-e]' OR colonne REGEXP '^[A-E]';" Là encore une erreur m'est retournée, mais je ne la comprends pas plus:
SQLException : NULL value as BOOLEAN
SQLState: S1000
VendorError: -106 Voilà, mon obstination a des limites, tout comme mes connaissances en base de données... Merci d'avance pour votre aide.
|
|
lundi 2 janvier 2006 à 11:13:08 |
Re : pb SELECT avec LIKE
|
mercredi 18 janvier 2006 à 23:01:49 |
Re : pb SELECT avec LIKE

Stubbornman
|
Oui, j'ai bien lu ton poste, mais j'voulais être sur que vous ayez tous compris mon problème.... (je trouvais personnellement que je n'avas pas été très clair dans mesexplications).
Donc pour les LIKE, en effet, y'a aucune chance pour que ca fonctionne. Pour ce qui est des expressions régulières, je ne sais pas les utiliser... J'ai bien essayé, mais j'vois pas comment ça marche...
Enfin, concernante SGBDR (heu, si j'ai bien compris ce que c'était...) j'utilise une bibliothèque Java qui s'appelle hsqldb. J'espère que c'est de ça que tu parle.
Voilà, je n'ai tjs pas trouvé de solution, et je reste donc avec mon code sur plusieurs lignes, jusqu'à ce que je trouve mieux...
@+
|
|
jeudi 19 janvier 2006 à 12:15:23 |
Re : pb SELECT avec LIKE

aieeeuuuuu
|
re,
le SGBDR, c'est le Systeme de Gestion de Base de Données Relationnel exemple : Oracle, SQL Server, MySQL
dans ton cas, au vu des messages d'erreur, il me semble que tu utilise MySQL
alors pour utiliser les expressions réguliere, je ne suis pas sur du tout que ca soit possible
il faut donc contourner ton probleme. une solution serait de ne prendre que la premiere lettre de ton champs, la mettre en majuscule, et de voir si elle se trouve entre deux bornes : (mettre en majuscule te permet de ne faire qu'une seule verification, au lieu d'en faire une en minuscule et une en majuscule)
SELECT * FROM table WHERE UPPER(LEFT(Colonne, 1)) BETWEEN 'A' AND 'E'
je n'ai pas MySQL pour tester, mais sous SQL Server ca marche.
si ca ne marche pas, tu peux faire aussi
SELECT * FROM table WHERE UPPER(LEFT(Colonne, 1)) IN ('A','B','C','D','E')
ou meme (en fonction de tes besoins) créer une table qui contient ces lettres et faire une sous requete dans cette table a la place du IN: IN(SELECT * FROM maNouvelleTable)
avec ca je pense que tu devrais pouvoir y arriver.
note que je ne suis pas sur de la syntaxe sous MySQL pour le UPPER (mise ne majuscule) et le LEFT(prendre les n premiers caracteres de gauche, ici un seul caractere en fait). je pense que ca devrait etre implementé de la meme facon, mais si ca ne fonctionn pas, cherche l'equivalent pour MySQL
|
|
mercredi 1 février 2006 à 18:00:04 |
Re : pb SELECT avec LIKE

aieeeuuuuu
|
re,
juste un petite precision.
je reviens sur ce que je dis.
effectivement l'utilisation de [a-e] est tout a fait valide. je n'avais jamaisvu son utilisation.
autant pour moi !
cela dit ca n'explique pas pourquoi ta requete ne fonctionne pas, mais c'etait juste pour corriger mon erreur :)
PS : reste a verifier que cette syntaxe est bien acceptée par MySQL, et verifie aussi si il n'y a pas des restriction a son utilisation, en ce qui concerne les types des champs visés. Les champs de type CHAR renvoie des resultats innatendus du fait qu'ils "rajoutent" des espaces blancs a la fin des chaines de caracteres pour arriver a la longeur definie
|
|
vendredi 10 février 2006 à 16:24:32 |
Re : pb SELECT avec LIKE

Stubbornman
|
aieeeuuuuu, je tiens a te remercier pour ta reponse. Je n'ai pas encore eu le temps de verifier, mais si ca marche je pense que j'utiliserais la methode du Upper sur la premiere lettre, ce qui permettra a mon code d'etre bcp plus lisible.
Evidemment, je viendrais te dire ce qu'il en est.
En tout, merci de ton aide.
|
|
mercredi 15 février 2006 à 21:09:46 |
Re : pb SELECT avec LIKE

Stubbornman
|
Réponse acceptée !
aieeeuuuuu, je tiens a te remercier une nouvelle fois pour ta reponse, elle me fut d'une grande aide. Pour ceux qui seraient confrontés au même problème, voici une méthode qui fonctionne:
SELECT * FROM tableWHERE UPPER(LEFT(colonne,1)) BETWEEN 'A' AND 'E'";
Ceci fonctionne très bien, et rend mon code nettement plus lisible. Je n'ai pas essayé l'autre méthode, celle-ci me satisfaisant grandement.
Encore merci de votre aide à tous.
|
|
Cette discussion est classée dans : pb, colonne, select, like, from
Répondre à ce message
Sujets en rapport avec ce message
Problème de select avec un like [ par vincentstryckmans ]
Salut, En Delphi 7, j'utilise les composants InterbaseExpress pour communiquer avec Interbase. Une de mes requêtes est du type : select id, num_rel
Select * from uneProcedureStockee [ par lutin2004 ]
Bonjour, je voudrais faire une requête du style Select * from uneProcedureStockee where critere = "ccccc" Qui s'apparenterait en fait à un tri des rés
Selection de tables [ par Rouk ]
Bonjour,je debeloppe en vb.net un datagrid alimente par une base sqlje voudrai faire une selection des tables que j'affiche dans le datagrid.SELECT
Besoin d'aide en SQL avec access [ par developvbdebut ]
Bonjour tout le mondeon tape le nom recherché dans une zone de text. les noms et prenoms s'affiche dans une zone de liste (car plusieurs membres de la
SELECT + float(5,2) [ par djagger ]
Salut !je fais la requete suivante :SELECT * FROM my_tarif WHERE min=15.49ca ne marche pas !!!!!?????par contre :SELECT * FROM my_tarif WHERE min</STR
PROBLEME SUR REQUETE ET SOUS REQUETE [ par SR2 ]
voici mon problèmeje souhaiterai réaliser la meme opération qu'avec cette requete mais en utilisant des jointures INNER JOINpour eviter toutes ces sou
Récupérer le résultat d'une requete dans une variable ... [ par dinous ]
bonjour ! voici ce que je voudrai faire : select distinct() from ... where ... et metre le résultat de cette erquete dans eun variable genre : @ma
Requêtes imbriquées. Erreur [ par patatedu65 ]
Bonjour,j'aimerai qu'on m'aide à toruver une solution au problème que je vous expose tout de suite.J'ai développé un site en PHP/MySQL. J'ai fait mes
Requete Imbriqué Erreur Aussi :s [ par SF2Boss ]
Voici La requete Rebelle : SELECT </s
If et else dans stored procedure [ par issoux ]
Bonjour , j'essaie de faire des condition if et else imbriqué dans une stored procedure sous sql server 2000 , mais je n'y arrive pas : probleme de sy
Livres en rapport
|
Derniers Blogs
CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT)CSS CONTENT STATE SELECTORS (PERSONNAL DRAFT) par FREMYCOMPANY
Bonjour à tous, Je viens de publier une proposition comprenant 5 pseudo-classes pour le CSS Working Group ayant trait à l'état de chargement d'un élément (ex: IMG,VIDEO,AUDIO,OBJECT pour l'HTML.). Si le c½ur vous en dit, vous pouvez retrouver cette p...
Cliquez pour lire la suite de l'article par FREMYCOMPANY MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ?MBA : POURQUOI FAIRE ET COMMENT LE CHOISIR ? par ROMELARD Fabrice
Formation initiale Durant la formation, le découpage classique est le suivant (je donnerai les équivalences Suisse lorsque je les connaîtrais) : Ecole primaire jusqu'au Collège : Formation générale permettant d'obtenir les méthodes...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice Y'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENTY'A DES ERREURS QUI PEUVENT RENDRE LE DéVELOPPEUR VIOLENT par Aleks
Quand on a ce genre d'erreur sans log :
Et bas on a juste envie de choper le gas de Microsoft qu'a développé ça et lui foutre des baffes de Coboye ! ...
Cliquez pour lire la suite de l'article par Aleks [HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL[HYPER-V 3] PRéSENTATION DES COMMANDLETS POWERSHELL par Pierrick CATRO-BROUILLET
Avec la sortie prochaine de la Beta Consumer Preview de Windows 8, j'avais envie de revenir sur une des fonctionnalités que j'attends le plus et que, en bon geek que je suis, j'utilise déjà : Hyper-V 3 ainsi son module PowerShell.
Il y a déjà pléthor...
Cliquez pour lire la suite de l'article par Pierrick CATRO-BROUILLET IIS7 - COMPRESSION GZIPIIS7 - COMPRESSION GZIP par cyril
La compression GZIP permet d'améliorer les performances de navigation en compressant ce qu'envoie le serveur à un client. Pour comprendre comment cela fonctionne, regardons ce qu'il se passe au niveau HTTP lorsqu'un client tente d'accéder à une ress...
Cliquez pour lire la suite de l'article par cyril
Logiciels
Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning Academy System (17.1.3.0)ACADEMY SYSTEM (17.1.3.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|