I would like to know if there is a better way than :
REPLACE(REPLACE(REPLACE(REPLACE(REPLACE('p%a_t*er?', '\\', '\\\\'), '%', '\%'), '_', '\_'), '*', '%'), '?', '_')
To transform standard search patterns * and ? to the LIKE equivalents % and _ in MySQL ?
There isn’t a shorter method to perform multiple-character replacements directly in MySQL. There are alternatives such as User-Defined-Functions (UDFs), but I’m doubtful that any would be beneficial to your exact purpose.
My suggestion would be to perform the text replacement prior-to querying the database, if acceptable.
In PHP, this could be done with:
In ASP, you could try:
Though, both method aren’t super-short, they do make it a little easier to read and also won’t add any time to your db-query. Also, doing the replacement prior to the query will allow you to replace before the string is sanitized so you won’t need to replace the
\as you do in your existing query – which saves you one replacement!