Читать в оригинале

<< Предыдущая Оглавление Следующая >>


2.2.4 Диапазоны, специальные символы и пустые значения в предложениях WHERE

В предложениях WHERE могут также указываться диапазоны и шаб­лоны поиска. Для задания диапазонов используется ключевое слово BETWEEN. Например, оператор

SELECT Name, Nationality
FROM ARTIST
WHERE BirthDate BETWEEN 1700 AND 1890;

даст следующий результат:
Miro                   Spanish
Kandinsky          Russian
Frings                 US

Этот оператор эквивалентен следующему:

SELECT Name, Nationality
FROM ARTIST
WHERE BirthDate >= 1700 AND BirthDate <= 1890;

Таким образом, диапазон, задаваемый ключевым словом BETWEEN, включает в себя граничные значения (в данном случае 1700 и 1890).

Для задания шаблонов поиска в SQL используется ключевое слово LIKE. Символ подчеркивания (_) представляет любой одиночный символ. С его помощью можно находить значения, удовлетворяющие заданному шаблону:

SELECT * FROM ARTIST
WHERE Nationality LIKE 'S_anish';

Подчеркивание означает, что данном месте может стоять любой сим­вол. Результатом этого оператора является следующая таблица:

3                Miro                    Spanish                       1870                           1950

Следует обратить особое внимание на такую ситуацию. Чтобы найти всех художников, чье имя начинается на букву 'М' и состоит из четырех символов, нельзя использовать следующий шаблон:

SELECT *
FROM ARTIST
WHERE Name LIKE 'М___';

Результатом будет таблица, состоящая из нулевого количества строк. Причина такого результата заключается в том, что столбец Name имеет тип Char(25). Следовательно, каждое имя будет содержать двадцать пять символов, а не четыре, как предполагалось в шаблоне.

Символ процента (%) представляет последовательность из одного или нескольких произвольных символов. Запрос, возвращающий строки ху­дожников, чьи имена начинаются с буквы 'М', можно записать следующим образом:

SELECT *
FROM ARTIST
WHERE Name LIKE 'M%'

Результат будет следующим:

Если требуется найти всех художников, чьи национальности заканчи­ваются на букву 'h'. можно использовать символ процента следующим образом:

SELECT * FROM ARTIST
WHERE Nationality LIKE '%h';

Результат будет таким:

Для поиска пустых значений в предложении WHERE служит конструк­ция IS NULL. Следующий запрос выдает имена и национальности всех художников, у которых не указан год рождения:

SELECT Name, Nationality
FROM ARTIST
WHERE BirthDate IS NULL;

Результат запроса будет таким:

Moos

US

Tobey

US

Matisse

French

Chagall

French

Сортировка результатов

Порядок строк в таблице, возвращаемой оператором SELECT, является произвольным. Если нужно отсортировать строки результата, это можно сделать с помощью конструкции ORDER BY. Например, следующий за­прос возвращает имена и национальности художников, отсортированных в алфавитном порядке по именам:

SELECT Name, Nationality FROM ARTIST
ORDER BY Name;

Результатом будет следующая таблица:

Chagall

French

Frings

US

Kandinsky

Russian

Klee

German

Matisse

French

Miro

Spanish

Moos

US

Tobey

US

По умолчанию сортировка в SQL производится в порядке возрастания. Для явного указания порядка сортировки можно использовать ключевые слова ASC (по возрастанию) и DESC (по убыванию). Например, следую­щий запрос отсортирует художников по именам в обратном порядке:

SELECT Name, Nationality
FROM ARTIST
ORDER BY Name DESC;

Результат будет таким:

Tobey

US

Moos

US

Miro

Spanish

Matisse

French

Klee

German

Kandinsky

Russian

Frings

US

Chagall

French

Сортировать можно и более чем по одному столбцу. Чтобы отсорти­ровать список имен художников и их национальностей сначала по нацио­нальностям в обратном порядке, а потом внутри каждой национальности по именам в прямом порядке, можно было бы использовать такой запрос:

SELECT Name, Nationality
FROM ARTIST
ORDER BY Nationality DESC, Name ASC;

Это приведет к следующему результату:

Frings

US

Moos

US

Tobey

US

Miro

Spanish

Kandinsky

Russian

Klee

German

Chagall

French

Matisse

French



<< Предыдущая Оглавление Следующая >>