cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 janvier 2007
-
16 déc. 2005 à 12:35
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 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...
cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 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...
cs_Stubbornman
Messages postés80Date d'inscriptionlundi 18 février 2002StatutMembreDernière intervention12 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.
@+
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_neodante
Messages postés2835Date d'inscriptionlundi 11 août 2003StatutModérateurDernière intervention16 décembre 200611 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
;-)