|
EXECUTORCD |
FIO |
|
4 |
ШЛЮКОВ М.К. |
Рис. 3.11. Результат выполнения запроса к таблице Executor
В учебной БД для описания поля Fio используется тип VARCHAR(20), из чего следует, что пробелы в конце строки отрезаются автоматически, и поэтому в предыдущем примере можно было воспользоваться шаблоном 'ШЛ_КОВ М.К.' (без знака процента в конце). Однако в случае, если поле БД имеет тип CHAR(n), использование знака процента в конце строки шаблона необходимо для того, чтобы строки с такими полями (дополненными справа пробелами до общего количества символов n) были включены в результат выполнения запроса.
При проверке строк на соответствие шаблону может оказаться, что подстановочные знаки входят в строку символов в качестве литералов. Например, нельзя проверить, содержится ли знак процента в строке, включив его в шаблон, поскольку он будет считаться подстановочным знаком. В стандарте ANSI/ISO определен способ проверки наличия в строке литералов, использующихся в качестве подстановочных знаков. Для этого применяются символы пропуска. Когда в шаблоне встречается такой символ, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а литералом (т.е. происходит пропуск символа). Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение. Символ пропуска определяется в виде строки, состоящей из одного символа, и фразы ESCAPE. Например, чтобы найти фамилии абонентов, начинающихся со знака процента, нужно выполнить следующий запрос: SELECT Fio FROM Abonent WHERE Fio LIKE '$%%' ESCAPE '$';.
Этот запрос не имеет результатов, т.к. в таблице Abonent нет абонентов, фамилии которых начинаются с символа процента. Первый символ процента в шаблоне, следующий за символом пропуска $, считается литералом, второй считается подстановочным знаком.
предыдущаяследующая