Предложение WHERE
Предложение 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';| [[ column ]] |
|---|
| NULL [[ value ]] |
Здесь мы выбираем модели, подходящие для операционной системы W98. Ниже приведен результат выполнения этого запроса.
| code | model | speed | ram | hd | cd | price |
|---|---|---|---|---|---|---|
| 1 | 1232 | 500 | 64 | 5 | 12x | 600 |
| 3 | 1233 | 500 | 64 | 5 | 12x | 600 |
| 8 | 1232 | 450 | 64 | 8 | 24x | 350 |
Это может оказаться полезнее, чем кажется на первый взгляд, если иметь в виду конфиденциальность информации. Например, на клиенте можно формировать запросы, которые будут оперировать такими категориями, как высоко, средне и низко оплачиваемый специалист. То есть сами критерии (оклады) будут спрятаны, скажем, в хранимой процедуре, а через параметр будет передаваться что-то типа символьной строки «средний».