Предложение WHERE ограничивает выходной набор теми строками, которые удовлетворяют предикату в этом предложении. Предположим, что у нас имеется следующее соответствие между объемом памяти ПК и типом используемой операционной системы (естественно, условно):
|
| RAM < 64 | W95 |
| RAM >=64 и < 128 | W98 |
| RAM >= 128 | W2k |
|
Если мы захотим отобрать компьютеры по типу ОС (заметим, что такого поля нет в таблице PC), то можно написать следующий оператор:
Консоль
SELECT *
FROM PC
WHERE CASE
WHEN ram < 64
THEN 'W95'
WHEN ram < 128
THEN 'W98'
ELSE 'W2k'
END ='W98'
Здесь мы выбираем модели, подходящие для операционной системы W98. Ниже приведен результат выполнения этого запроса.
| code
|
model
|
speed
|
ram
|
hd
|
cd
|
price
|
| 1 | 1232 | 500 | 64 | 5 | 12x | 600.0 |
| 3 | 1233 | 500 | 64 | 5 | 12x | 600.0 |
| 8 | 1232 | 450 | 64 | 8 | 24x | 350.0 |
|
Это может оказаться полезнее, чем кажется на первый взгляд, если иметь в виду конфиденциальность информации. Например, на клиенте можно формировать запросы, которые будут оперировать такими категориями, как высоко, средне и низко оплачиваемый специалист. То есть сами критерии (оклады) будут спрятаны, скажем, в хранимой процедуре, а через параметр будет передаваться что-то типа символьной строки «средний».