Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Відбір даних із таблиць засобами SQL.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
86.53 Кб
Скачать

Використання like

Для порівняння рядків замість операцій =, !=, <> можна використовувати операцію LIKE, яка виконує порівняння за частковим співпадінням. Часткове співпадіння значень доцільно перевіряти, наприклад, коли відома тільки початкова частина прізвища:

select prizv

from stat

where prizv like ‘Ac%’

Тут ми отримаємо список прізвищ, які починаються на “Ac”. Звичайна форма для стовпця текстового типу дозволяє відшукати всі значення вказаного стовпця, які відповідають зразку, заданому „текстовою константою”.

У виразах операції LIKE допускається використання шаблону, в якому можна використовувати всі алфавітно-цифрові символи (з врахуванням регістра). При цьому два символи мають спеціальне призначення:

% - заміняє будь-яку кількість символів, в тому числі й нульовий;

_ - заміняє один символ.

З допомогою шаблона можна виконати перевірку на часткове співпадіння не тільки початкових символів рядка, але й знайти входження заданого фрагмента в будь-яку частину рядкового значення. Наприклад:

select prizv

from stat

where prizv like '% р %'

Перед операцією LIKE можна використовувати описувач NOT, який змінює результат виконання операції на протилежне значення і перевіряє значення виразів на неспівпадіння.

Для перевірки нульового значення виразу служить операція IS NULL, яка має наступний формат:

<Вираз> IS [NOT] NULL

Наприклад,

select *

from stat

where is null

У цьому запиті відбираються всі поля записів таблиці stat, які мають нульові значення.

Використання IN

Перевірка на входження значення виразу в список виконується з допомогою операції IN наступного формату:

<Вираз> [NOT] IN <Список значень>

Цю операцію зручно виконувати, якщо вираз може приймати невелику кількість різних значень. Наприклад:

select cod, prizv

from stat

where osvita in (‘середня’, ‘вища’)

У результаті отримаємо вибірку кодів і прізвищ всіх працівників з середньою і вищою освітою.

Використання BETWEEN

Операція BETWEEN виконує перевірку входження значення в діапазон. Вона має такий формат:

<Вираз> [NOT] BETWEEN

<Мінімальне значення> AND <Максимальне значення>

При виконанні цієї операції в набір даних включаються записи, для яких значення виразу більше або рівне мінімальному, а також менше або рівне максимальному значенням. Описувач NOT змінює результат операції на протилежний.

Розглянемо приклад:

select *

from stat

where data_nar between ‘01/01/1960’ and ‘03/12/1980’

У результаті виконання такого запиту отримаємо набір записів, для яких дата народження (поле data_nar) знаходиться в діапазоні з 1 січня 1960 року до 3 грудня 1980 року.

Використання HAVING

Операція HAVING відіграє таку ж роль для груп, як і WHERE для рядків. Ця операція включається в оператор при наявності GROUP BY.

Складені критерії відбору записів

При відборі можна використовувати декілька операцій, задаючи тим самим складені критерії відбору записів. Складений критерій (логічний вираз) складається з:

  • простих умов;

  • логічних операцій: AND (логічне І), OR (логічне АБО), NOT(логічне НЕ);

  • круглих дужок.

В мові SQL пріоритет операцій порівняння вищий за пріоритет логічних операцій. Для зміни порядку виконання операцій використовуються круглі дужки.

Приклади запитів із складеним критерієм відбору:

select prizv

from stat

where osvita = ‘вища’ and adres =’Львів’

Запит відбирає прізвища працівників, які мають вищу освіту і домашня адреса – Львів.

select prizv, name

from stat

where osvita = ‘вища’ or osvita = ‘незакінчена вища’

Запит відбирає прізвища та імена працівників, які мають вищу або незакінчену вищу освіту.

select prizv

from stat

where (osvita = ‘вища’) and

(data_nar between ‘01.01.1960’ and ‘03.12.1980’)

Запит відбирає прізвища працівників, які мають вищу освіту і народилися в період з 1 січня 1960 року до 3 грудня 1980. У даному логічному виразі прості умови записані у дужках, але це не обов’язково, так як пріоритет операцій порівняння вищий від пріоритету логічних операцій.