Переименованиеособенно желательно при использовании в предложении SELECTвыражений для вычисления значения. Эти выражения позволяют получать данные, которые не находятся непосредственно в таблицах. Если выражениесодержит имена столбцов таблицы, указанной в предложении FROM, то выражение подсчитывается для каждой строки выходных данных. Так, например, чтобы вывести объем оперативной памяти в килобайтах, можно написать:
SELECT ram * 1024 AS Kb, hd Gb
FROM Pc
WHERE cd = '24x';
Теперь будет получен следующий результат:
Иногда бывает необходимо выводить поясняющую информацию рядом с соответствующим значением. Это можно сделать, добавив строковое выражение как дополнительный столбец. Например, запрос
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
Синтаксис LIKE::=
[NOT] LIKE
[ESCAPE ]
Предикат LIKEсравнивает строку, указанную в первом выражении для вычисления значения строки , называемого проверяемым значением, с шаблоном, который определен во втором выражении для вычисления значения строки . В образце разрешается использовать два трафаретныхсимвола:
* Символ подчеркивания (_), который можно использовать вместо любого единичного символа в проверяемом значении.
* Символ процента (%), который заменяет набор любых символов (число символов в наборе может быть от 0 и более) в проверяемом значении.
Если проверяемое значение соответствует образцу с учетом трафаретных символов, то значение предиката равно TRUE. Ниже приводится несколько примеров написания шаблонов.
Шаблон
|
Описание
|
'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.
Читать дальше