114
WHERE UPPER(NAME_TEACHER) BETWEEN 'З' AND 'Л';
Среди строк результата нет фамилий, начинающихся на букву ‘Л’. Дело в том, что
при сравнении строк символов разной длины SQL предварительно дополняет более
короткую строку символами пробела, а он в упорядочениях символов предшествует всем
остальным.
Поэтому строка, состоящая из буквы ‘Л’ (дополненная пробелами), всегда
будет меньше любой другой строки, в которой за начальной буквой 'Л’
следуют
отличающиеся от пробела символы.
Чтобы это учесть, в качестве верхнего значения диапазона лучше всего указывать
следующую по алфавиту букву (в данном случае — ‘М’).
Использование отрицания
Так как предикат BETWEEN возвращает истинностное значение, к нему можно
применить логическое отрицание. Для этого следует воспользоваться нотацией NOT
BETWEEN, в которой
предикат будет истинным, только если значение столбца не входит
в указанный диапазон. Представление отрицания нотацией NOT BETWEEN введено в
язык
для большей наглядности, так как с предикатом BETWEEN можно стандартным
образом использовать логический оператор NOT (то есть ставить отрицание ко всему
выражению, а не к предикату):
Do'stlaringiz bilan baham: