MySQL примеры

Сравнение с шаблоном (LIKE REGEXP) не работает если в строке есть символ '\' (обратный слэш), даже если он экранирован. Почему?

Например, почему не работает такой запрос: SELECT * FROM tableName WHERE charFieldName LIKE "%\\%" - выбрать из таблицы tableName ряды в которых поле charFieldName содержит обратный слэш (\). При этом сам обратный слэш в запросе экранирован.

Ответ: Потому что запрос неправильно записан.

Правильный запрос выглядит так:

SELECT * FROM tableName WHERE charFieldName LIKE "%\\\\%"

Чтобы выполнить поиск символа '\', его следует указать как '\\\\'. При чиной такой записи является то, что обратные слеши удаляются дважды: сначала синтаксическим анализатором, а потом - при выполнении сравнения с шаблоном, таким образом остается только один обратный слеш, который и будет обрабатываться.