Путаница с mysql как поиск и = поиск

У меня возник этот вопрос, когда я использую что-то поиск в 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 в порядке?

Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
0
163
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Оператор MySQL LIKE для выбора данных на основе шаблонов.

Оператор LIKE обычно используется для выбора данных на основе шаблонов. Правильное использование оператора LIKE необходимо для повышения производительности запросов.

Оператор LIKE позволяет выбирать данные из таблицы на основе заданного шаблона. Поэтому оператор LIKE часто используется в предложении WHERE оператора SELECT.

MySQL предоставляет два подстановочных символа для использования с оператором LIKE, процентное значение % и знак подчеркивания _.

  • Подстановочный знак процента (%) позволяет сопоставить любую строку из нуля или более символов.
  • Подстановочный знак подчеркивания (_) позволяет сопоставить любой одиночный символ.

Comparison operations дает значение 1 (TRUE), 0 (FALSE) или NULL. Эти операции работают как для чисел, так и для строк. При необходимости строки автоматически преобразуются в числа, а числа - в строки.

Следующие операторы реляционного сравнения могут использоваться для сравнения не только скалярные операнды, но и операндов строк:

= > < >= <= <> !=

Примечание: = - оператор равенства, а LIKE - простое сопоставление с образцом

спасибо за ответ @ Sinto. Я немного понимаю, я искал это в документации mysql, но ничего не нашел. так что не могли бы вы дать ссылку или что-то об этом в официальной документации mysql, на которую я мог бы сослаться, пожалуйста?

Azleal 09.06.2018 08:10

Конечно, вот один для вас: dev.mysql.com/doc/refman/8.0/en/comparison-operators.html И если мое объяснение помогло вам и если вы считаете его полезным для других, отметьте его как ответ.

Sinto 09.06.2018 08:12

конечно ваш ответ пригодится, ваша ссылка тоже. Я нашел это в документации: Поскольку MySQL использует escape-синтаксис C в строках (например, \ n для представления символа новой строки), вы должны удвоить любой \, который вы используете в строках LIKE. Например, для поиска \ n укажите его как \\ n. Для поиска \ укажите его как \\\\; это связано с тем, что синтаксический анализатор удаляет обратную косую черту один раз, а затем, когда выполняется сопоставление с шаблоном, остается одна обратная косая черта для сопоставления.

Azleal 09.06.2018 11:54

Другие вопросы по теме