Критерии сравнения: IN, BETWEEN, LIKE онлайн урок.


В этом уроке рассмотрим применение операторов IN, BETWEEN, LIKE в предложении WHERE.

Оператор IN ( ... ) позволяет задавать критерий, согласно которому значения поля должны попадать в определенное множество значений. Эти значения перечисляются через запятую в круглых скобках после IN:

<поле> IN (значение-1, значение-2, ... ,значение-3)

Рассмотрим пример. Выберем записи из таблицы student, в которых значения поля name попадают в множество ('John', 'Bob')

SELECT * FROM student WHERE name IN('John', 'Bob');
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 2 | John | 27 | 123-65-12 |
| 3 | Bob | 23 | 456-12-55 |
+----+------+------+-----------+
2 rows in set (0.00 sec)

Оператор BETWEEN ... AND ... используется для определения отрезка значений, в который должны попадать значения указанного поля. Для наглядности, добавим несколько записей в таблицу student:

INSERT INTO student  VALUES (null, 'Andy', 20, '244-34-12'), (null, 'Rita', 21, '432-65-11');

Теперь выберем записи, для которых возраст студента изменяется от 20 до 25 лет включительно:

SELECT * FROM student WHERE age BETWEEN 20 AND 25;
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 1 | Mike | 25 | 345-65-78 |
| 3 | Bob | 23 | 456-12-55 |
| 4 | Andy | 20 | 244-34-12 |
| 5 | Rita | 21 | 432-65-11 |
+----+------+------+-----------+
4 rows in set (0.00 sec)

Как видно из результата, таблица содержит также граничные значения для критерия: 20 и 25 лет.

Оператор LIKE используется для задания критерия поиска по строкам согласно некоторой маске. Маска - это специальная строка, которая определят множество обычных строк. Для определения маски используется специальные символы:

  • % - определяет любое количество любых символов, даже нулевое
  • _ - определяет один любой символ.

Для записи критерия по маске, ее необходимо указать после LIKE в кавычках. Например, запрос для поиска записей, в которых имя студента начинается с буквы A выглядит следующим образом:

SELECT * FROM student WHERE name LIKE 'A%';
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 4 | Andy | 20 | 244-34-12 |
+----+------+------+-----------+
1 row in set (0.00 sec)

Запрос для поиска номеров телефонов, в запись которых входим цифра 6:

SELECT * FROM student WHERE phone LIKE '%6%';
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 1 | Mike | 25 | 345-65-78 |
| 2 | John | 27 | 123-65-12 |
| 3 | Bob | 23 | 456-12-55 |
| 5 | Rita | 21 | 432-65-11 |
+----+------+------+-----------+
4 rows in set (0.00 sec)

Замечание. Перечисленные операторы можно также использовать в связке с логическими операторами, в том числе NOT. В таком случае, эффект будет обратным:

SELECT * FROM student WHERE age NOT BETWEEN 20 AND 25;
+----+------+------+-----------+
| id | name | age | phone |
+----+------+------+-----------+
| 2 | John | 27 | 123-65-12 |
+----+------+------+-----------+
1 row in set (0.00 sec)


Проверьте свои знания
Таблица country: получить страны, порядковые номера которых либо 5, либо 7, либо 2. Получить страны, названия которых содержат символ n.