MySQL: pb de "\"

MySQL: pb de "\" - Programmation

Marsh Posté le 26-11-2001 à 15:11:21    

Voila, avec mySql, g le pb suivant:
Quand je fais un WHERE, ce con de mySql interprète les '\' comme des séquances d'échappement (de la même façon qu'en C). ce qui fait que par exemple, si dans la colone CLE de ma table TABLES, g un champ 'c:\test'. Pour retrouver cette ligne, je devrais faire:
Select * from TABLES Where CLE = 'c:\\test'
'\\' étant la séquence d'échappement qui veux dire '\'^pour mySql
est ce qu'il y aurai pas un moyen de désactiver cette option de mySql !???

Reply

Marsh Posté le 26-11-2001 à 15:11:21   

Reply

Marsh Posté le 26-11-2001 à 15:14:43    

non, y a pas moyen, mais si tu travaille en php, il y a des fontion qui font cette modif exprès pour toi.

Reply

Marsh Posté le 26-11-2001 à 15:17:09    

ouais, ms le pb est plus gros que ça:  
1- je suis pas en pHp
2- le progiciel sur lequel je bosse doit être standard, et pouvoir bosser avec SQLServer, tt comme avec MySql, et les autres... je peux donc même pas écrire une fonction qui doublerai les '\'...
 
t sur à 100% qu'y a pas moyen de désactiver ce putain de truc, ou c juste que t'as jammais trouvé comment faire !?

Reply

Marsh Posté le 26-11-2001 à 15:37:53    

ben non, parce que le \ est un caractère d'échappement standard de SQL, donc tu auras le même problème quelque soit la DB que tu utilises.

Reply

Marsh Posté le 26-11-2001 à 15:42:13    

ha non... g jammais eu ce pb, pourtant nôtre progiciel bosse avec presque tous les serveurs de bases de données...

Reply

Marsh Posté le 26-11-2001 à 15:49:45    

Citation :


In JDBC, strings containing SQL commands are just normal strings - the SQL is not parsed or interpreted by the Java compiler. So there is no special mechanism for dealing with special characters; if you need to use a quote (" ) within a Java string, you must escape it.  


 
Ca c'est pour le JDBC, mais c'est la même chose pour les autres drivers d'accès aux DB. Autrement dit, c'est que ton drivers d'accès aux autres DB parse les expression avant de les envoyer à la DB, mais par pour MySQL.

Reply

Marsh Posté le 26-11-2001 à 15:58:56    

gizmo a écrit a écrit :

Citation :


In JDBC, strings containing SQL commands are just normal strings - the SQL is not parsed or interpreted by the Java compiler. So there is no special mechanism for dealing with special characters; if you need to use a quote (" ) within a Java string, you must escape it.  


 
Ca c'est pour le JDBC, mais c'est la même chose pour les autres drivers d'accès aux DB. Autrement dit, c'est que ton drivers d'accès aux autres DB parse les expression avant de les envoyer à la DB, mais par pour MySQL.  




 
ouais, surement...
pfff, c chiant ça...

Reply

Marsh Posté le 27-11-2001 à 01:18:26    

Sous Oracle, l'option pour passer outre un caractère d'echappement est escape. Voici un exemple avec un like et le fameux symbol '%'.
 

Code :
  1. like '?%toto?\titi' escape '?'


 
Là, le like fonctionnera comme un = sur la chaîne '%toto\titi'
voilou... :D

Reply

Marsh Posté le 27-11-2001 à 09:59:18    

Merci, mais ça à pas l'air de marcher avec mySql...
alors j'me démerde en doublant les '\'. ce qui est con, c'est que, en plus, le like interprète à son niveau encore, les '\' comme caractères spéciaux. je dois donc quadrupler les`\`... un beau bordel, pour pas grand chose ! :(

Reply

Marsh Posté le 27-11-2001 à 10:00:40    

wouatouwouatou a écrit a écrit :

Sous Oracle, l'option pour passer outre un caractère d'echappement est escape. Voici un exemple avec un like et le fameux symbol '%'.
 

Code :
  1. like '?%toto?\titi' escape '?'


 
Là, le like fonctionnera comme un = sur la chaîne '%toto\titi'
voilou... :D  




 
d'ailleur à mon avis, l'exemple que tu m'as donné devrais plutot être  

Code :
  1. like '?%toto?\\titi' escape '?'


...non !? ou alors même ça c spécifique à mySQL ?

Reply

Marsh Posté le 27-11-2001 à 10:00:40   

Reply

Marsh Posté le 27-11-2001 à 11:36:46    

D'après la DOC de MySql, t'as pas le choix :
http://www.mysql.com/doc/S/t/String_syntax.html


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 27-11-2001 à 11:52:56    

Mara's dad a écrit a écrit :

D'après la DOC de MySql, t'as pas le choix :
http://www.mysql.com/doc/S/t/String_syntax.html  




 
ouais, j'avais lu la doc... et je suis d'accord avec toi pour dire qu'on peux pas passer à côté de ça !
Et que c con... les \ c qd même pas mal utilisé...
et je persiste, y a QUE MySql qui fait chier avec ça...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed