Les informations fournies dans cette réponse peuvent conduire à des pratiques de programmation non sécurisées.
Les informations fournies ici dépendent fortement de la configuration de MySQL, y compris (mais sans s'y limiter) la version du programme, le client de la base de données et le codage de caractères utilisé.
Voir http://dev.mysql.com/doc/ refman/5.0/en/string-literals.html
MySQL recognizes the following escape sequences. \0 An ASCII NUL (0x00) character. \' A single quote (“'”) character. \" A double quote (“"”) character. \b A backspace character. \n A newline (linefeed) character. \r A carriage return character. \t A tab character. \Z ASCII 26 (Control-Z). See note following the table. \\ A backslash (“\”) character. \% A “%” character. See note following the table. \_ A “_” character. See note following the table.
Donc, vous avez besoin
select * from tablename where fields like "%string \"hi\" %";
Bien que Bill Karwin note ci-dessous , l'utilisation de guillemets doubles pour les délimiteurs de chaîne n'est pas du SQL standard. Il est donc recommandé d'utiliser des guillemets simples. Cela simplifie les choses :
select * from tablename where fields like '%string "hi" %';