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