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...
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...
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 :
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 :
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 :
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 !???