В сьогоднішньому уроці ми розглянемо основну інформацію по операторам IN та BETWEEN в MySQL. За допомогою оператора IN ви зможете визначити, чи відповідає потрібне значення якому-небудь значенню зі списку (або в підзапиті). А за допомогою оператора BETWEEN ви зможете визначити, чи знаходиться потрібне значення в діапазоні доступних значень.
Оператор IN дозволяє визначити, чи відповідає вказаному значенню яке-небудь значення в наборі значень або наборі, що повертається підзапитом.
Нижче показаний синтаксис оператора IN:
SELECT
col_1,col_2,...
FROM
table_name
WHERE
(expr|col_1) IN ('value1','value2',...);
Давайте розглянемо цей приклад запиту більш докладно:
col_1) або вираз (expr) з оператором IN у виразі WHERE.Оператор IN повертає 1, якщо значення col_1 або результат виразу expr дорівнює будь-якому значенню в списку, в іншому випадку він повертає 0.
Коли всі значення в списку є константами, MySQL виконує наступні кроки:
col_1 або результату виразу expr.IN зі списком констант, виконується дуже швидко.
Зверніть увагу, що якщо expr або будь-яке значення в списку дорівнює NULL, оператор IN повертає NULL.
Ви можете об’єднати оператор IN з оператором NOT, щоб визначити, чи не відповідає значення якому-небудь значенню в списку або підзапиті. І ви також можете використовувати оператор IN в виразі WHERE інших операторів, таких як UPDATE і DELETE.
Давайте попрактикуємось на деяких прикладах використання оператора IN.
Якщо ви хочете знайти офіси, розташовані в Німеччині та США, ви можете використовувати оператор IN в якості наступного запиту:
SELECT
officeCode,
country
FROM
offices
WHERE
country IN ('Germany', 'USA');
Оператор IN часто використовується з підзапитом. Замість надання списку літеральних значень підзапит отримує список значень з однієї або декількох таблиць і використовує їх в якості вхідних значень оператора IN.
Наприклад, якщо ви хочете знайти замовлення, сумарні значення яких перевищують 50 000, ви можете використовувати оператор IN, як показано в наступному запиті:
SELECT orderNumber, status FROM orders WHERE orderNumber IN ( SELECT orderNumber FROM orderDetails GROUP BY orderNumber HAVING SUM(quantityOrdered * priceEach) > 50000 );
Оператор BETWEEN – це логічний оператор, який дозволяє визначити, чи знаходиться потрібне значення в зазначеному діапазоні, або ж ні. Оператор BETWEEN часто використовується в виразі WHERE операторів SELECT, UPDATE і DELETE.
Нижче показаний синтаксис оператора BETWEEN:
expr BETWEEN start_expr AND end_expr;
Значення expr – це вираз для тестування в діапазоні, визначеному значеннями start_expr і end_expr. Всі три вирази: expr, start_expr і end_expr повинні мати однаковий тип даних.
Оператор BETWEEN повертає true, якщо значення expr більше або дорівнює (>=) значення start_expr і менше або дорівнює (<=) значенню end_expr, в іншому випадку повертається нуль.
Умова NOT BETWEEN повертає true, якщо значення expr менше (<) значення start_expr або більше (>) значення значення end_expr, в іншому випадку повертається 0.
Якщо який-небудь вираз дорівнює NULL, оператор BETWEEN повертає NULL.
Давайте попрактикуємось на деяких прикладах використання оператора BETWEEN.
У наступному прикладі оператор BETWEEN використовується для пошуку товарів, у яких ціни знаходяться в діапазоні від 500 до 1000:
SELECT productName, prodPrice FROM products WHERE prodPrice BETWEEN 500 AND 1000;
Ви також можете переписати наведений вище запит, використовуючи в якості запиту значення менше або дорівнює (<=), більше або дорівнює (>=) і логічний оператор AND:
SELECT productName, prodPrice FROM products WHERE prodPrice >= 500 AND prodPrice <= 1000;
Коли ви використовуєте оператор BETWEEN із значеннями дати, щоб отримати найкращий результат, ви повинні використовувати приведення типу для явного перетворення типу стовпця або виразу в тип DATE.
У наступному прикладі ми шукаємо замовлення, які були зроблені в період між датами з 01.01.2019 по 31.12.2019:
SELECT
orderNumber,
orderDate
FROM
orders
WHERE
orderDate BETWEEN
CAST('2019-01-01' AS DATE) AND
CAST('2019-12-31' AS DATE);
Оскільки типом даних, який використовується в стовпці з датою, є DATE, ми використовуємо оператор CAST, який перетворює літерні рядки виду ‘2019-01-01’ і ‘2019-12-31’ в значення DATE.
Ось і все на сьогодні! З цього уроку ви дізналися основну інформацію про оператори IN та BETWEEN в MySQL. Використовуючи оператор IN, ви зможете визначити відповідність потрібного значення якому-небудь значенню зі списку. А використовуючи оператор BETWEEN, ви зможете визначати, чи знаходиться необхідне значення в діапазоні доступних значень.
Дякуємо, що читаєте нас!
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…