Что такое оператор BETWEEN в SQL
Что проверяют
Умеете ли вы читать условия выборки и, главное, видеть границы. Для тестировщика это вопрос не про синтаксис, а про технику граничных значений: BETWEEN в отчётах и фильтрах чаще всего ошибается ровно на краях диапазона.
Как отвечать
WHERE price BETWEEN 10 AND 50 это сокращение для price >= 10 AND price <= 50. Обе границы включаются, отдельного «исключающего» варианта у оператора нет, есть только NOT BETWEEN.
Дальше важны четыре свойства:
- порядок операндов не симметричен. Если первая граница больше второй, выборка пуста, потому что условие раскрывается буквально;
NULLв любом операнде даёт неопределённость, поэтому строка не попадёт ни в выборку поBETWEEN, ни в выборку поNOT BETWEEN;- для колонки с датой и временем вторая граница это полночь. Диапазон по датам отрежет всё, что случилось в последний день после полуночи, и корректнее полуинтервал:
order_date >= '2024-01-01' AND order_date < '2025-01-01'; - строки сравниваются по правилам сортировки базы, так что регистр, локаль и порядок символов меняют результат.
Тест-дизайн вокруг этого: значения на обеих границах и по шагу внутрь и наружу, пустое множество при перевёрнутых границах, NULL, последняя секунда периода, разные часовые пояса и типы колонки.
Где спотыкаются
Проверяют середину диапазона и объявляют фильтр рабочим. Дефект живёт на краю: товар по цене ровно в границу либо теряется, либо попадает дважды в соседние отчёты.
Считают диапазон дат закрытым по обе стороны и принимают отчёт, где не хватает последнего дня. Это самая частая ошибка, и находится она только сверкой количества строк с полуинтервалом.
Забывают про пустые значения. Тестировщик ждёт, что запись с неизвестной ценой всплывёт хотя бы в отрицании условия, не находит её и заводит дефект на разработку вместо описания ожидаемого поведения.