Вывод для этого запроса показывается в Рисунке 5.6.
Обратите Внимание что Grass и Giovanni отсутствуют, даже при включенном BETWEEN. Это происходит из-за того что BETWEEN сравнивает строки неравной длины. Строка 'G' более короткая чем строка Giovanni, поэтому BETWEEN выводит 'G' с пробелами. Пробелы предшествуют символам в алфавитном порядке ( в большинстве реализаций ), поэтому Giovanni не выбирается. То же самое происходит с Grass. Важно помнить это когда вы используете BETWEEN для извлечения значений из алфавитных диапазонов. Обычно вы указываете диапазон с помощью символа начала диапазона и символа конца(вместо которого можно просто поставить z ).
=============== SQL Execution Log ============
| |
| SELECT * |
| FROM Customers |
| WHERE cname BETWEEN 'A' AND 'G'; |
| ============================================= |
| cnum cname city rating snum |
| ------ -------- ------ ---- ------ |
| 2006 Clemens London 100 1001 |
| 2008 Cisneros San Jose 300 1007 |
| |
=============================================
Рисунок 5. 6: Использование BETWEEN в алфавитных порядках
============ ОПЕРАТОР LIKE =============
LIKE применим только к полям типа CHAR или VARCHAR, с которыми он используется чтобы находить подстроки. Т.е. он ищет поле символа чтобы видеть, совпадает ли с условием часть его строки.
В качестве условия он использует групповые символы(wildkards) - специальные символы которые могут соответствовать чему-нибудь.
Имеются два типа групповых символов используемых с LIKE:
* символ подчеркивания ( _ ) замещает любой одиночный символ.
Например, 'b_t' будет соответствовать словам 'bat' или
'bit', но не будет соответствовать 'brat'.
* знак процента (%) замещает последовательность любого числа
символов (включая символы нуля). Например '%p%t' будет
соответствовать словам 'put', 'posit',или'opt',но не'spite'.
Давайте найдем всех заказчиков чьи имена начинаются с G ( вывод показывается в Рисунке 5.7 ):