Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2057 connectés 

 


Dernière réponse
Sujet : MySQL: pb de "\"
El_gringo

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...


Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
El_gringo

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...

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

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 ?

El_gringo 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 ! :(
wouatouwouatou 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

El_gringo

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...

gizmo

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.

El_gringo ha non... g jammais eu ce pb, pourtant nôtre progiciel bosse avec presque tous les serveurs de bases de données...
gizmo 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.
El_gringo 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 !?
gizmo non, y a pas moyen, mais si tu travaille en php, il y a des fontion qui font cette modif exprès pour toi.
El_gringo 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 !???

Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR