Вы находитесь на странице: 1из 3

28

2.2. О перат оры IN, BETWEEN, LIKE, IS NULL


Пр и з а д а нии логич еского услов ия в п р ед ложении WHERE могут быть
исп ользов а ны оп ер а тор ы IN, BETWEEN, LIKE, IS NULL.
О п ер а тор ы IN (РАВЕН ЛЮБОМУ ИЗ СПИСКА) и NOT IN (НЕ РАВЕН НИ
ОДНОМУ ИЗ СПИСКА) исп ользуются д ля ср а в нения п р ов ер яемого з на ч ения
п оля с з а д а нным сп иском. Э тот сп исок з на ч ений ука з ыв а ется в скобка х
сп р а в а от оп ер а тор а IN.
Постр оенный с исп ользов а нием IN п р ед ика т (услов ие) сч ита ется
истинным, если з на ч ениеп оля, имякотор ого ука з а но слев а от IN, со в па д а ет
(п од р а з умев а ется точ ноесов п а д ение) с од ним из з на ч ений, п ер еч исленных в
сп иске, ука з а нном в скобка х сп р а в а от IN.
Пр ед ика т, п остр оенный с исп ользов а нием NOT IN, сч ита етсяистинным,
если з на ч ениеп оля, имя котор ого ука з а но слев а от NOT IN, не со в па д а ет ни
с од ним из з на ч ений, п ер еч исленных в сп иске, ука з а нном в скобка х сп р а в а от
NOT IN.

П римеры.
Получ ить из та блицы EXAM_MARKS св ед ения о студ ента х, и м еющ и х
э кз а мена ционныеоценки только 4 и 5.

SELECT *
FROM EXAM_MARKS
WHERE MARK IN (4, 5);
Получ итьсв ед енияо студ ента х, не и м ею щ и х ни од ной э кз а мена ционной
оценки, р а в ной 4 и 5.

SELECT *
FROM EXAM_MARKS
WHERE MARK NOT IN (4, 5);

О п ер а тор BETWEEN исп ользуется д л я п р ов ер ки услов ия в хожд ения


з на ч енияп оля в з а д а нный интер в а л, то естьв место сп иска з на ч ений а тр ибута
э тот оп ер а тор з а д а ет гр а ницы его из менения.
Н а п р имер , з а п р ос, в ып олняющ ий в ыв од з а п исей о п р ед мета х обуч ения,
колич еств о ч а сов , отв од имых на котор ые, лежит в п р ед ела х межд у 30 и 40,
29

имеет в ид :
SELECT *
FROM SUBJECT
WHERE HOUR BETWEEN 30 AND 40;
Г р а нич ные з на ч ения, в д а нном случ а е з на ч ения 30 и 40, в хо д ят в о
множеств о з на ч ений, с котор ыми п р оиз в од ится ср а в нение. О п ер а тор
BETWEEN может исп ользов а ться ка к д ля ч ислов ых, та к и д ля симв ольных
тип ов п олей.

О п ер а тор LIKE п р именим только к симв ольным п олям тип а CHAR или
VARCHAR (см. р а з д ел 1.5, Т ип ы д а нных SQL). Э тот оп ер а тор осущ еств ляет
п р осмотр строков ых з на ч ений п олей с целью оп р ед еления, в ход ит ли
з а д а нна я в оп ер а тор е LIKE п од стр ока (обр аз ец п оиска ) в симв ольную
стр оку, яв ляющ уюсяз на ч ением п р ов ер яемого п оля.
Д ля того, ч тобы осущ еств лять в ыбор ку стр оков ых з на ч ений п о
з а д а нному обр а з цу п од стр оки, можно п р именятьша блон искомого обр а з ца
стр оки, исп ользующ ий след ующ иесимв олы:
• симв ол п од ч ер кив а ния “_”, ука з а нный в ша блоне обр а з ца , оп р ед еляет
в оз можностьна лич ияв ука з а нном местео д но го любо го симв ола ,
• симв ол “%” д оп уска ет п р исутств ие в ука з а нном месте п р ов ер яемой
стр оки п ослед ов а тельности любых симв олов п р оиз в ольной д лины.

П ример.
Н а п иса ть з а п р ос, в ыбир а ющ ий из та блицы STUDENT св ед ения о
студ ента х, у котор ых фа мил ии на ч ина ютсяна букв у “Р”.
SELECT *
FROM STUDENT
WHERE SURNAME LIKE ‘Р %’;

В случ а е в оз никнов ения необход имости в ключ ения в обр а з ец д ля


ср а в нения са мих симв олов “_” и “%” п р именяют, та к на з ыв а емые escape-
симв олы. Е сли escape-симв ол п р ед шеств ует з на ку “_” и “%”, то э ти з на ки
буд ут интер п р етир ов а ться букв а льно. Н а п р имер , можно з а д а ть обр а з ец
п оиска с п омощ ью след ующ его в ыр а жения
LIKE ‘_\_Р ’ ESCAPE ‘\’.
30

В э том в ыр а жении симв ол ‘\’ с п омощ ью кл юч ев ого слов а ESCAPE


объяв л яется escape-симв олом. Пер в ый симв ол “_” в з а д а нном ша блоне
п оиска ‘_\_Р ’ буд ет соотв етств ов а ть, ка к и р а нее, любому на бор у симв олов в
п р ов ер яемой стр оке. О д на ко в тор ой симв ол “_”, след ующ ий п осле симв ола
‘\’, объяв ленного escape-симв олом, ужебуд ет интер п р етир ов а ться букв а льно
ка к обыч ный симв ол, та к жека к и симв ол Р в з а д а нном ша блоне.
О бр а щ а ем в а ше в нима ние на то, ч то р а ссмотр енные в ыше оп ер а тор ы
ср а в нения“=, <, >, <=, >=, <>” и оп ер а тор ы IN, BETWEEN и LIKE ни в коем
случ а е нельзя исп ользов а тьд ля п р ов ер ки сод ер жимого п оля на на лич ие в
нем п устого з на ч ения NULL (см. р а з д ел 1.5, Тип ы д а нных SQL). Д ля э тих
целей сп ециа льно п р ед на з на ч ены оп ер а тор ы IS NULL (ЯВЛЯЕТСЯ ПУСТЫМ)
и IS NOT NULL (ЯВЛЯЕТСЯ НЕ ПУСТЫМ).

УП Р АЖ НЕ НИ Я

1. Н а п ишите з а п р ос, в ып олняющ ий в ыв од на ход ящ ихся в та блице


EXAM_MARKS номер ов п р ед метов обуч ения, э кз а мены п о котор ым
сд а в а л исьмежд у 10 и 20 янв а р я1999 год а .
2. Н а п ишите з а п р ос, в ыбир а ющ ий д а нные обо в сех п р ед мета х обуч ения,
э кз а мены п о котор ым сд а ны студ ента ми, имеющ ими ид ентифика тор ы 12
и 32.
3. Н а п ишите з а п р ос, котор ый в ып олняет в ыв од на з в а ний п р ед метов
обуч ения, на ч ина ющ ихсяна букв у ‘И’.
4. Н а п ишите з а п р ос, в ыбир а ющ ий св ед ения о студ ента х, у котор ых имена
на ч ина ютсяна букв ы ‘И’ или ‘С’.
5. Н а п ишите з а п р ос д ля в ыбор а из та блицы EXAM_MARKS з а п исей, д ля
котор ых отсутств уют з на ч енияоценок (п олеMARK).
6. Н а п ишите з а п р ос, в ып олняющ ий в ыв од из та блицы EXAM_MARKS
з а п исей, д лякотор ых в п олеMARK п р оста в лены з на ч енияоценок.

Вам также может понравиться