У меня возник этот вопрос, когда я использую что-то поиск в mysql. вот подробная информация.
скажем, у меня есть таблица с именем test со столбцом с именем content. в конкретной записи столбец content содержит:
["
/^\w{2,}/","
/^[a-z][a-z0-9]+$/","
/^[a-z0-9]+$/","
/^[a-z]\d+$/"]
в конце строк есть символ перевода строки (последняя строка исключена) поэтому, когда я использовал подобный синтаксис для поиска этой записи, я написал такой SQL
select * from test where `content` like
'[\"\n/^\\\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\\\d+$/\"]'
и вернул правильный результат. но когда я изменил like на =, и этот оператор SQL не работал, после нескольких попыток я получил этот оператор SQL, который работал:
select * from test where `content` =
'[\"\n/^\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\d+$/\"]'
это сработало. так вот вопрос:
почему у like и = разные стратегии побега? в операторе like я должен использовать \\\\w, \\\\d, в то время как в операторе =\\w, \\d в порядке?






Оператор MySQL LIKE для выбора данных на основе шаблонов.
Оператор LIKE обычно используется для выбора данных на основе шаблонов. Правильное использование оператора LIKE необходимо для повышения производительности запросов.
Оператор LIKE позволяет выбирать данные из таблицы на основе заданного шаблона. Поэтому оператор LIKE часто используется в предложении WHERE оператора SELECT.
MySQL предоставляет два подстановочных символа для использования с оператором LIKE, процентное значение % и знак подчеркивания _.
%) позволяет сопоставить любую строку из нуля или более символов._) позволяет сопоставить любой одиночный символ.Comparison operations дает значение 1 (TRUE), 0 (FALSE) или NULL. Эти операции работают как для чисел, так и для строк. При необходимости строки автоматически преобразуются в числа, а числа - в строки.
Следующие операторы реляционного сравнения могут использоваться для сравнения не только скалярные операнды, но и операндов строк:
= > < >= <= <> !=
Примечание: = - оператор равенства, а LIKE - простое сопоставление с образцом
Конечно, вот один для вас: dev.mysql.com/doc/refman/8.0/en/comparison-operators.html И если мое объяснение помогло вам и если вы считаете его полезным для других, отметьте его как ответ.
конечно ваш ответ пригодится, ваша ссылка тоже. Я нашел это в документации: Поскольку MySQL использует escape-синтаксис C в строках (например, \ n для представления символа новой строки), вы должны удвоить любой \, который вы используете в строках LIKE. Например, для поиска \ n укажите его как \\ n. Для поиска \ укажите его как \\\\; это связано с тем, что синтаксический анализатор удаляет обратную косую черту один раз, а затем, когда выполняется сопоставление с шаблоном, остается одна обратная косая черта для сопоставления.
спасибо за ответ @ Sinto. Я немного понимаю, я искал это в документации mysql, но ничего не нашел. так что не могли бы вы дать ссылку или что-то об этом в официальной документации mysql, на которую я мог бы сослаться, пожалуйста?