Имена столбцов, указанные в предложении SELECT, можно переименовать. Это делает
результаты более читабельными, поскольку имена полей в таблицах часто сокращают с целью
упрощения набора. Ключевое слово AS, используемое для переименования, согласно стандарту
можно и опустить, т.к. оно неявно подразумевается.
Например, запрос
SELECT ram AS Mb, hd Gb FROM Pc WHERE cd = '24x'; |
Mb | Gb |
64 | 8 |
32 | 10 |
Переименование особенно желательно при использовании в предложении SELECT выражений для вычисления значения. Эти выражения позволяют получать данные, которые не находятся непосредственно в таблицах. Если выражение содержит имена столбцов таблицы, указанной в предложении FROM, то выражение подсчитывается для каждой строки выходных данных. Так, например, чтобы вывести объем оперативной памяти в килобайтах, можно написать:
SELECT ram * 1024 AS Kb, hd Gb FROM Pc WHERE cd = '24x'; |
Kb | Gb |
65536 | 8 |
32768 | 10 |
Иногда бывает необходимо выводить поясняющую информацию рядом с соответствующим значением. Это можно сделать, добавив строковое выражение как дополнительный столбец. Например, запрос
SELECT ram, 'Mb' AS ram_units, hd, 'Gb' AS hd_units FROM Pc WHERE cd = '24x'; |
ram | ram_units | hd | hd_units |
64 | Mb | 8 | Gb |
32 | Mb | 10 | Gb |
Если же явно не указать имя для выражения, то будет использован способ именования по умолчанию, который зависит от используемой СУБД. Так в MS Access будут использованы имена типа выражение1 и т.д., а выходной столбец в MS SQL Server вообще не будет иметь заголовка.
Синтаксис LIKE::=
<Выражение для вычисления значения строки>
[NOT] LIKE
<Выражение для вычисления значения строки>
[ESCAPE <символ>]
Предикат LIKE сравнивает строку, указанную в первом выражении для вычисления значения строки,
называемого проверяемым значением, с шаблоном, который определен во втором выражении для
вычисления значения строки. В образце разрешается использовать два трафаретных символа:
Шаблон | Описание |
'abc%' | Любые строки, которые начинаются с букв "abc". |
'abc_' | Строки длиной строго 4 символа, причем первыми символами строки должны быть "abc". |
'%z' | Любая последовательность символов, которая обязательно заканчивается символом "z". |
'%Rostov%' | Любая последовательность символов, содержащая слово "Rostov" в любом месте строки. |
Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о':
SELECT * FROM Ships WHERE class LIKE '%o'; |
name | class | launched |
Haruna | Kongo | 1916 |
Hiei | Kongo | 1914 |
Kirishima | Kongo | 1915 |
Kongo | Kongo | 1913 |
Musashi | Yamato | 1942 |
Yamato | Yamato | 1941 |
Пример. Найти все корабли, имена классов которых заканчиваются на букву 'о', но не на 'go':
SELECT * FROM Ships WHERE class NOT LIKE '%go' AND class LIKE '%o'; |
name | class | launched |
Musashi | Yamato | 1942 |
Yamato | Yamato | 1941 |
Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE. Этот управляющий символ должен использоваться в шаблоне перед трафаретным символом, сообщая о том, что трафаретный символ следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ "_", то шаблон '%_%' приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:
'%#_%' ESCAPE '#'
Для проверки значения на соответствие строке "25%" можно воспользоваться таким предикатом:
LIKE '25|%' ESCAPE '|'
Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:
позволяет проверить отсутствие (наличие) значения в полях таблицы. Использование в этих случаях обычных предикатов сравнения может привести к неверным результатам, т.к. сравнение со значением NULL дает результат UNKNOWN (неизвестно).
Так, если требуется найти записи в таблице Pc, для которых в поле price отсутствует значение (поиск ошибок ввода), можно воспользоваться следующим оператором:
SELECT * FROM Pc WHERE price IS NULL; |
Рекомендуемые упражнения: 44.
Начало | Упражнения SELECT (рейтинговые этапы) | Упражнения DML | Разработчики |