Pb requete SQL

cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007 - 16 déc. 2005 à 12:35
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 - 31 déc. 2005 à 11:10
Salut à tous,

J'ai un soucis avec la requete suivante:
"SELECT * FROM table WHERE colonne LIKE '[a-e]%';"

Alors que ca fonctionne tres bien comme ceci:
"SELECT * FROM table WHERE colonne LIKE 'a%' OR colonne LIKE 'b%' OR colonne LIKE 'c%' OR colonne LIKE 'd%' OR colonne LIKE 'e%' ;"

Pouvez-vous m'expliquer pourquoi?

J'ai bien essaye egalement avec le mot cle REGEXP:
"SELECT * FROM table WHERE colonne REGEXP '^[a-e]';"
mais ca ne fonctionne pas...

Merci de votre aide

5 réponses

cs_Zart Messages postés 285 Date d'inscription jeudi 29 juillet 2004 Statut Membre Dernière intervention 27 juin 2006 1
16 déc. 2005 à 15:33
Ton surnom stubborn ? ca veut dire obstiné en anglais il me semble ?

Dis en plus sur le SGBD que tu utilises ? Quels sont les exceptions levés par Java ?
0
cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007
16 déc. 2005 à 22:56
Obstiné je le suis... 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.
0
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
19 déc. 2005 à 13:06
Merci de mettre tonpost dans le site approprié à code source : sqlfr.com

http://www.sqlfr.com/



++
0
cs_Stubbornman Messages postés 80 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 12 janvier 2007
27 déc. 2005 à 18:10
Salut,

J'ai posté ce poste sur chacun des deux forums (sqlfr.com et javafr.com) car je ne sais pas si l'erreur vient de ma requête sql ou de ma programmation java.
Evidemment, si une solution m'était fournie sur l'un des deux sites, je cloturerais les deux postes, en mettant l'explication.

Mais si ce poste n'a vraiment rien à fairze ici, et bien... je m'en excuse.

@+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_neodante Messages postés 2835 Date d'inscription lundi 11 août 2003 Statut Modérateur Dernière intervention 16 décembre 2006 11
31 déc. 2005 à 11:10
Dans l'énoncé je ne vois pas une seule ligne de Java non ? Donc je
sais pas comment les personnes pourraient t'aider sur cepoint ... une
simple SQLException ne suffit pas à donner beaucoup d'infos surtout que
cette excetion et générique et ne dépend même pas d'un SGBD particulier
;-)



Donne plus d'infos dans ce cas là ;-)



++
0
Rejoignez-nous