good_br
@good_br
учусь

Запрос regexp или like, почему разный результат?

Доброй ночи ! делаю выборку из базы , и столкнулся с проблемой... Мне нужно выборку по врачам врач(|доктор|терапевт|Логопед|Маммолог и т.п) , когда я делаю запрос с помощью LIKE , я получаю выборку большего кол-ва , чем делаю тоже самое через regexp, как так получается? И как сделать запрос, через regexp , что бы выводил большие кол-во?
оба запроса написаны ниже.

use test1;
SELECT `firstname`,
`middlname`,
 `lastname`,
 `age`,
 `phone1`,
 `phone2`,
 `desired_profession`,
 `email1`
 `type_of_work`,
 `place_of_work`,
 `pol`,
 `birthday`,
 `birthmonth`,
 `birthyear`,
 `maritalstatus`,
 `children`,
 `best`,
 `dop`,
 `driving_licence`,
 `education`
FROM profil WHERE town =4 and
    

   `desired_profession` REGEXp  'врач|доктор|терапевт|Логопед|Маммолог
|Мануальный|Массажист|Миколог
|Нарколог
|Невролог
|Нейрохирург
|Неонатолог
|Нефролог
|Окулист
|офтальмолог
|Онкогинеколог
|Онкодерматолог
|Онколог
|Ортопед
|Остеопат
|Отоларинголог
|Педиатр
|Пластический хирург
|Подолог
|Проктолог
|Психиатр
|Психолог
|Психотерапевт
|Пульмонолог
|Реабилитолог
|Ревматолог
|Рентгенолог
|Репродуктолог
|Рефлексотерапевт
|Сексолог
|Семейный врач
|Сомнолог
|хирург
|Специалист по клеточным технологиям
|Сурдолог
|Терапевт
|Травматолог
|Трихолог
|УЗИ
|Уролог
|Физиотерапевт
|Флеболог
|Фтизиатр
|Хирург
|Эндокринолог
|Эндоскопист
|Эпилептологи';


Второй запрос

use test1;
SELECT `firstname`,
`middlname`,
 `lastname`,
 `age`,
 `phone1`,
 `phone2`,
 `desired_profession`,
 `email1`
 `type_of_work`,
 `place_of_work`,
 `pol`,
 `birthday`,
 `birthmonth`,
 `birthyear`,
 `maritalstatus`,
 `children`,
 `best`,
 `dop`,
 `driving_licence`,
 `education`
FROM profil WHERE town =4 and

   `desired_profession`  LIKE "%врач%";
  • Вопрос задан
  • 174 просмотра
Пригласить эксперта
Ответы на вопрос 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
когда я делаю запрос с помощью LIKE , я получаю выборку большего кол-ва , чем делаю тоже самое через regexp, как так получается?

Почему выдумаете, что у вас одинаковая маска? Она абсолютно разная.

Значение для REGEXP составлено таким образом, что поиск идет только по точному совпадению.
Например, если у вас в поле "desired_profession" будет значение "врач-терапевт", то оно попадет под ваше условие LIKE, но не попадет под ваше решулярное выражение.
А вот значение "врач" попадет под оба условия.

И как сделать запрос, через regexp , что бы выводил большие кол-во?

REGEXP '.*врач.*'
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы