Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
13
Добавлен:
07.02.2016
Размер:
171.01 Кб
Скачать

Лабораторна робота № 10

ТЕМА РОБОТИ: Функції SQL.

МЕТА РОБОТИ: Вивчити різні функції SQL.

Теоретичні відомості

Основні функції SQL

На прикладі невеликої підмножини функцій Transact-SQL розглянемо найпоширеніші способи використання функцій в операторах Transact-SQL. Це основна підмножина функцій SQL, що звичайно використається у всіх діалектах SQL.

Таблиця 10.1

Функція

Операція

AVG()

Середнє

SUM()

Сума

MIN()

Мінімум

MAX()

Максимум

COUNT()

Лічильник

Ці й інші функції використаються в директиві SELECT, так начебто вони є назвами стовпців. Вони повертають результат у вигляді стовпців.

Аргументи функції повинні бути укладені в дужки. Якщо у функції кілька аргументів, то вони розділяються комами.

Синтаксис використання функцій у директиві SELECT оператора SELECT виглядає в такий спосіб:

SELECT function ({column_1 | *}), ... function (column_n)

FROM table

Елементи NULL не повинні використатися в таких функціях, як AVERAGE ( ), SUM ( ), MIN( ) або MAX ( ). Якщо в деякому наборі втримуються тільки елементи NULL, то функція повертає NULL. Функція COUNT ( * ) у кожному разі визначає кількість рядків для стовпця, навіть якщо він містить елементи NULL.

Використання функції avg()

Функція AVG() повертає середнє арифметичне значень із заданих стовпців. У наступному прикладі функція AVG() повертає середнє арифметичне значень зі стовпця PayRate таблиці Pays.

SELECT AVG( PayRate)

FROM Pay

Використання функції count ( )

Функція COUNT ( ) повертає кількість рядків, які задовольняють вираженню, зазначеному в операторі SELECT. Як аргумент функції COUNT ( ) може використатися символ зірочки. Якщо в директиві SELECT для функції COUNT ( ) замість імені стовпця помістити символ зірочки, це буде означати, що потрібно обробити всі рядки, що задовольняють критерію, заданому в операторі SELECT. Функція COUNT ( ) підраховує число всіх рядків таблиці, що задовольняють заданій умові. При цьому використається наступний синтаксис.

SELECT COUNT ( column_name )

FROM table_name

Якщо в операторі SELECT використається директива WHERE , то функція COUNT ( ) застосовується тільки до тих рядкам, які задовольняють критерію , заданому в директиві WHERE.

Використання функції MAX ( )

Функція MAX ( ) повертає найбільше значення стовпця. Її синтаксис виглядає в такий спосіб:

SELECT MAX ( column_name)

FROM table_name

Використання функції MIN( )

Функція min( ) повертає найменше значення стовпця. Її синтаксиc виглядає в такий спосіб:

SELECT MIN( )

FROM table_name

Використання функції SUM( )

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

SUM ([DISTINCT] expression

Використання у функції COUNT ( ) ключового слова DISTINCT

Якщо у функції COUNT ( ) є посилання на ім'я стовпця, то вона повертає число його значень. При підрахунку повторювані значення враховуються, а елементи NULL - немає. Якщо додати ключове слово DISTINCT, то функція COUNT ( ) поверне кількість неповторюваних значень. При цьому використається наступний синтаксис:

SELECT COUNT (DISTINCT column_name )

FROM table_name

Використання функції CUBE( ) і ROLLUP ( )

Функція CUBE ( ) і ROLLUP ( ) були додані до SQL-Server 6.5 з метою одержання узагальненої, підсумкової інформації для більших обсягів даних. При використанні функції CUBE ( ) в операторі SELECT, підсумкові функції перетворяться в понад підсумкові, які повертають тільки рядка з найбільш узагальненою інформацією. Функція ROLLUP ( ) відрізняється від CUBE ( ) тільки тим, що вона залежить від порядку стовпців, зазначених у директиві GROUP UP.

Використання строкових функцій

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

ASCILL ( ) QUOTENAME ( ) SPACE ( )

CHAR ( ) REPLACE ( ) STR ( )

CHARINDEX ( ) REPLIСATE ( ) STUFF ( )

DIFFERENCE ( ) REVERSE ( ) SUBSTRING ( )

LOWER ( ) RIGHT ( ) UPPER ( )

LTRIM ( ) RTRIM ( )

PATINDEX ( ) SOUNDEX ( )

Функції роботи з рядками звичайно використаються для таких типів даних, як CHAR, VARCHAR, BINARY й VARBINARY, а також для тих, які неявно перетворяться в CHAR або VARCHAR. Наприклад, функцію PATINDEX ( ) можна застосовувати до типів даних CHAR, VARCHAR й TEXT.

Строкові функції можна вкладати друг у друга так, щоб результат, повернутий внутрішньою функцією, передавався зовнішньої. Якщо при роботі зі строковими функціями ви використаєте константи, містіть їх в одинарні лапки. Строкові функції звичайно використаються в директиві SELECT або WHERE.

Використання функції ASCILL ( )

Функція ASCILL ( ) повертає ASCILL-код символу, що є крайнім ліворуч у вираженні. Синтаксис функції ASCILL ( ) виглядає в такий спосіб:

ASCILL ( char_expr )

Використання функції CHAR ( )

Функція CHAR ( ) перетворить ASCILL-код у символ. Якщо значення, що ви введете як ASCILL-код, не входить в інтервал від 0 до 255, то функція поверне елемент NULL. Синтаксис функції CHAR ( ) виглядає в такий спосіб:

CHAR ( integer_expr)

Використання функції SOUNDEX ( )

Функція SOUNDEX ( ) повертає код, що складається із чотирьох цифр, що використається при порівнянні двох рядків за допомогою функції DTFFERENCE(). Цю функцію можна використати, наприклад, для пошуку слів зі схожим написанням у списку поштового розсилання. Її можна застосовувати також у текстовому процесорі для пошуку неправильних варіантів написання слів. Крім того, функцію SOUNDEX ( ) можна використати для порівняння слів, які вимовляються однаково, але пишуться по-різному. Синтаксис функції SOUNDEX ( ) виглядає в такий спосіб:

SOUNDEX ( char_expr )

Функція SOUNDEX ( ) ігнорує всі голосні, за винятком першої букви рядка.

Використання функції DIFFERENCE ( )

Функція DIFFERENCE ( )повертає різницю між значеннями двох чисел, отриманих за допомогою функції SOUNDEX ( ). Ця різниця являє собою значення в проміжку від 0 до 4, де 4 означає максимальний збіг. Таким чином, можна визначити граничне значення ступеня збігу й на підставі цього будувати подальші дії. Синтаксис функції DIFFERENCE ( ) виглядає так:

DIFFERENCE ( char_expr1, char_expr2 )

Використання функції LOWER ( )

Функція LOWER ( ) перетворить рядка, що складаються із прописних букв, у рядки, що складаються з малих літер. Для неї використається такий синтаксис:

LOWER (char_expr )

Використання функції UPPER ( )

Функція UPPER ( ) перетворить рядка, що складаються з малих літер, у рядки, що складаються із прописних букв. Для неї використається наступний синтаксис:

UPPER (char_expr )

Використання функції LTRIM ( )

Функція LTRIM ( ) видаляє з рядків початкові пробіли. Її можна застосовувати перед приміщенням елементів у стовпці з метою економії місця на диску. Початкові пробіли можна видалити також перед виконанням додаткової обробки рядка. Для функції LTRIM ( ) використається такий синтаксис:

LTRIM (char_expr )

Використання функції RTRIM ( )

Функція RTRIM ( ) видаляє з рядка кінцеві пробіли. Її, як функцію LTRIM ( ), можна застосовувати перед приміщенням елементів у стовпці з метою економії місця на диску. Кінцеві пробіли можна видалити також перед виконанням додаткової обробки рядка. Для функції RTRIM() використається наступний синтаксис:

RTRIM (char_expr )

Використання функції CHARINDEX ( )

Функція CHARINDEX ( ) повертає початкову позицію деякого символьного вираження усередині заданого рядка. Її перший параметр - це символьне вираження, а другий - просте вираження (наприклад, ім'я стовпця), за допомогою якого SQL-Server шукає символьне вираження. Помітимо, що для функції CHARINDEX ( ) не можна використати типи даних TEXT й IMAGE. Її синтаксис виглядає в такий спосіб:

CHARINDEX (char_expr, expression )

Використання функції PATINDEX ( )

Функція PATINDEX ( ) повертає початкову позицію першої появи в рядку заданого фрагмента рядка, наприклад, деякого значення в у стовпці таблиці. Якщо фрагмент не знайдений, то функція повертає значення нуль. Функцію PATINDEX ( ) можна використати з наступними типами даних CHAR, VARCHAR й TEXT. Синтаксис функції наступний:

PATINDEX ( '%substring%', column_name )

Використання функції REPLIСATE ( )

Функція REPLIСATE ( ) повертає кілька наборів символів, заданих її першим аргументом. Другий аргумент визначає кількість наборів, що повертають. Якщо другий аргумент (ціле вираження) є негативним числом, то функція повертає рядок нульової довжини (NULL). Синтаксис функції REPLIKATE ( ) виглядає так:

REPLIKATE (character_expression, integer_expression )

Використання функції REVERSE ( )

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

REVERSE ( character_string )

Використання функції RIGHT ( )

Функція RIGHT ( ) повертає праву частину рядка символів, переданої їй як перший аргумент, починаючи з певного символу праворуч, номер якого зазначений як другий аргумент. Якщо другий аргумент є негативним числом ( це може трапитися в результаті застосування вкладених функцій ), то функція RIGHT ( ) поверне рядок нульової довжини (NULL ). Синтаксис функції RIGHT ( ) виглядає так:

RIGHT ( character_expression, integer_expression )

Використання функції SPACE ( )

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

SPACE ( integer_expr )

Використання функції STR ( )

Функція STR ( ) перетворить числові дані в символьні. Її синтаксис виглядає в такий спосіб:

STR ( float_expr [ , length [ , decimal ] ] )

Аргументи length й decimal обов'язково повинні бути ненегативними. Якщо ви не вкажете довжину, то буде прийняте її стандартне значення - 10. Число, що повертає функцією, за замовчуванням округляється до цілого. Задана довжина повинна бути більше або дорівнює довжині числа плюс два знаком ста на десяткову крапку й знак. Якщо аргумент float_expr не міститься у відведене йому кількість символів, то функція STR ( ) повертає **.

Використання функції STUFF ( )

Функція STUFF ( ) вставляє другий рядок символів у першу. Аргумент length визначає кількість символів, які потрібно видалити з першого рядка, починаючи від початкової позиції starting_position. Функцію STUFF ( ) не можна застосовувати до типів даних TEXT або IMAGE. Її синтаксис виглядає так:

STUFF ( character_string1 , starting_position , length , character_stringth2 )

Використання функції SUBSTRING ( )

За допомогою функції SUBSTRING ( ) можна одержати потрібну частину деякого рядка символів, або підстроку. Її першим аргументом може бути символьний або двійковий рядок, ім'я стовпця або вираження, у якому використається ім'я стовпця. Другий аргумент визначає початкову позицію підстроки. І третій аргумент визначає кількість символів у підстроки.

Функцію SUBSTRING ( ), як і багато інших подібних функцій, не можна застосовувати до типів даних TEXT й IMAGE.

SUBSTRING ( character_string , string_position , length )

Використання функції конкатенації ( + )

Функція конкатенації (яка позначається символом « + ») дозволяє поєднувати текстові або двійкові дані. З її допомогою можна об'єднати дані, що перебувають у стовпцях із символьними рядками. Конкатенація використається для додавання одного рядка символів до кінця іншої. Символьні рядки повинні бути укладені в одинарні лапки. Синтаксис функції конкатенації виглядає в такий спосіб:

Expression + expression

Використання математичних функцій

Математичні функції застосовуються до числових типів даних таким як INTEGER, FLOAT, REAL, MONEY, SMALLMONEY. Вони повертають значення з точністю до шести десяткових розрядів. Якщо при використанні математичних формул відбулася помилка, то повертається елемент NULL і з'являється попереджуюче повідомлення про помилку.

Для контролю за ходом виконання операторів, що містять математичні функції, використаються дві опції обробки запитів. Перед ключовим слово кожної з них ставиться ключове слово SET . у випадку виявлення помилки опція arithabort припиняє виконання запиту, а опція arithignor

Повертає елемент NULL. Якщо встановити обидві опції arthabort й arithignor , то ніякі попереджуючі повідомлення не з'являться.

Таблиця 10.2

Математичні функції Transact-SQL

Функція Параметри Результат

ACOS

(float_expression)

Арккосинус числа; значення кута, косинус якого заданий у вигляді параметра із плаваючою крапкою, виражено в радіанах

ASIN

(float_expression)

Арксинус числа; значення кута, синус якого заданий у вигляді параметра із плаваючою крапкою, виражено в радіанах

ATAN()

(float_expression)

Арктангенс числа; значення кута, тангенс якого заданий у вигляді параметра із плаваючою крапкою , виражено в радіанах

ATAN2

(float_expr1,

float_expr2 )

Арктангенс числа; значення кута, тангенс якого заданий у вигляді вираження Float_Expr1/

Float_Expr2, виражено в радіанах

COS

(float_expression)

Тригонометричний косинус кута, заданого в радіанах

COT

(float_expression)

Тригонометричний котангенс кута, заданого в радіанах

SIN

(float_expression)

Тригонометричний синус кута, заданого в радіанах

TAN

(float_expression)

Тригонометричний тангенс кута, заданого в радіанах

DEGREES

(numeric_expression)

Перетворення радіан у градуси. Градуси перетворяться в той же тип даних, який має вихідне вираження (це може бути INTEGER,MONEY REAL або FLOAT)

RADIANS

(numeric_expression)

Перетворення градусів у радіани. Радіани перетворяться в той же тип даних, який має вихідне вираження (це може бути INTEGER,MONEY REAL або FLOAT)

CELLING

(numeric_expression)

Найменше ціле значення, що більше або дорівнює значенню вираження. Має тип такої ж як у вихідного вираження (це може бути INTEGER,MONEY REAL або FLOAT)

FLOOR

(numeric_expression)

Найбільше ціле значення, що більше або дорівнює значенню вираження. Має тип такої ж як у вихідного вираження (це може бути INTEGER,MONEY REAL або FLOAT)

EXP

(float_expression)

Експонента значення вираження

LOG

(float_expression)

Натуральний логарифм значення вираження

LOG10

(float_expression)

Десятковий логарифм значення вираження

PI()

Значення числа , рівне 3,1415

POWER

(numeric_expression, y)

Значення вираження в ступені Y; має такий же тип, як й у вихідного вираження (це може бути INTEGER,MONEY REAL або FLOAT)

(numeric_expression)

Абсолютне значення вираження; має такий же тип, як у вихідного вираження (це може бути INTEGER,MONEY REAL або FLOAT)

RAND

([integer_expression])

Випадкове дійсне число, що перебуває в проміжку від нуля до одиниці або до значення, зазначеного в необов'язковому аргументі integer _expression

ROUND

(numeric_expression, integer_expression)

Округлення значення з точністю до integer_expr; має той же тип, що й вихідне вираження (це може бути INTEGER,MONEY REAL або FLOAT)

SIGN

(numeric_expression)

Повертає значення 0, 1 або –1, залежно від знака вираження. Має той же тип, що й вихідне вираження (це може бути INTEGER,MONEY REAL або FLOAT)

SORT

(float_expression)

Квадратний корінь зі значення вираження

Функції для роботи з типами даних TEXT й IMAGE

Крім PATINDEX ( ), існують й інші функції, які можна застосовувати до типів даних TEXT й IMAGE. Для цих типів даних можна використати також відповідні опції й глобальні змінні.

Використання команди SET TEXTSIZE

Команда SET TEXTSIZE визначає кількість байт, які виділяються під буфер при відображенні даних типу TEXT й IMAGE за допомогою оператора SELECT. Синтаксис цієї команди виглядає в такий спосіб:

SET TEXTSIZE n

Параметр n визначає розмір буфера в байтах. У команді SET TEXTSIZE параметр n повинен мати тип INTEGER . Якщо задати n рівним нулю (0), то буде виділений буфер стандартних розмірів, рівний 4 Кбайт. Поточне значення параметра команди SET TEXTSIZE зберігається в глобальної змінної @@textsize.

Використання функції TEXTPTR ( )

Функція TEXTPTR ( ) повертає значення типу VARBINARY, тобто рядок, що складається з 16 двійкових символів. Отримане значення - це покажчик на першу сторінку збереженого в базі даних тексту. Хоча дане значення можна одержати за допомогою функції TEXTPTR ( ), звичайно прямо програмісти з ним не працюють. Воно застосовується самим SQL-Server.

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

TEXTPTR ( column_name )

Використання функції READTEXT

READTEXT - це, скоріше, не функція, а оператор. Він застосовується до типів даних TEXT й IMAGE. READTEXT витягає підстроку з даних, збережених як TEXT або IMAGE. Ви повинні визначити зсув і розмір наступної за ним підстроки в байтах. Синтаксис функції READTEXT виглядає так: READTEXT table.column textptroffset size

Використання функції TEXTVALID ( )

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

TEXTVALID ( 'table_name.column_name', text_ptr )

Використання функцій перетворення

У багатьох випадках вам не прийде явно виконувати перетворення, тому що SQL-Server робить це автоматично. Наприклад, можна безпосередньо в запиті до SQL-Server зрівняти вираження з типом даних CHARACTER з вираженням типу DATETIME. Крім того, SQL-Server автоматично перетворить вираження до типу INTEGER, якщо в ньому використаються типи даних INTEGER, SMALLINT або TINYINT.

Однак, якщо ви не впевнені в тім, що SQL-Server виконає неявне перетворення типів даних, або у вираженні використаються такі типи даних, які не можна неявно перетворити, то застосуєте функцію перетворення CONVERT ( ).

Використання функції CONVERT ( )

Функція CONVERT ( ) виконує явне перетворення типів даних. Ця функція перетворить вираження з одного типу в інший, а також у різні формати дат. Якщо функція CONVERT ( ) не може виконати перетворення, то ви одержите повідомлення про помилку. Синтаксис функції CONVERT ( ) виглядає в такий спосіб:

CONVERT ( datatype [( length )] , expression [ , style ])

Використання функцій для роботи з датами

Для виконання операція з даними типу DATE існує кілька різних функцій. Вони використаються для виконання арифметичних операцій над даними типу DATETIME й SMALLDATETIME. Функції для роботи з датами, як й інші функції, можна використати в директивах SELECT або WHERE , а також скрізь, де в операторах Transact-SQL можна застосовувати вираження.

Використання функції DATENAME

Функція DATENAME повертає певну частину дати у вигляді символьного рядка. Для цієї функції використається наступний синтаксис:

DATENAME ( date_part , date )

Використання функції DATEPART ( )

Функція DATEPART ( ) повертає певну частину дати у вигляді цілого значення. Для цієї функції використається наступний синтаксис:

DATEPART ( date_part , date )

Використання функції GETDATE ( )

Функція GETDATE ( ) повертає дату й час у стандартному форматі SQL-Server і має тип DATETIME ( ). Функція GETDATE ( ) не має аргументів. Її синтаксис виглядає в такий спосіб: GETDATE ( )

Використання функції DATEADD ( )

Функція DATEADD ( ) повертає значення, що дорівнює зазначеної в параметрі даті плюс додатковий інтервал. Синтаксис функції DATEADD ( ) такий:

DATEADD ( date_part, number, date )

Використання функції DATEDIFF ( )

Функція DATEDIFF ( ) повертає різницю між частинами двох заданих дат. Аргументами цієї функції є дві дати й ще частина дати. Функція DATEDIFF ( ) повертає ціле значення зі знаком, що дорівнює різниці частин другої й першої дат. При цьому використається такий синтаксис:

DATEDIFF ( date_part, date1, date2 )

Таблиця 10.3

Частини дат, використовувані як аргументи функцій роботи з датами

Частина дати

Скорочення

Значення

Year (Рік)

yy

1753-9999

Quarter (Квартал)

qq

1-4

Month (Місяць)

mm

1-12

Day of year (День року)

dy

1-366

Day (День)

dd

1-31

Week (Тиждень)

wk

1-45

Weekday (День тижня)

dw

1-7 (Воск-Суб)

Hour (Година)

hh

0-23

Minute (Хвилина)

mi

0-59

Second (Секунда)

ss

0-59

Millisecond (Міллісекунда)

ms

0-999

Використання системних функцій

Системні функції застосовуються для одержання інформації про комп'ютер, користувача, базу даних й об'єктах бази даних. Наприклад, ви можете довідатися зі збереженої процедури характеристики об'єктів бази даних й, користуючись умовними операторами, на основі отриманої інформації виконати різні операції.

Системні функції, як й інші функції, можна використати в директивах SELECT й WHERE оператора SELECT.

Таблиця 10.4

Системні функції

Функція

Параметри

Інформація, що повертає

HOST_NAME()

Ім'я комп'ютера-сервера

HOST_ID()

Ідентифікаційний номер комп'ютера

SUSER_ID

([‘login_name’])

Ідентифікатор пользователя призначуваний при вході в систему

SUSER_NAME

([server_user_id])

Ім'я користувача, використане для входу в систему

USER_ID

([user_name’])

Ідентифікаційний номер користувача, назначений при підключенні до бази даних

USER_NAME

([user_id])

Ім'я користувача, використане для підключення до бази даних

DB_NAME

([‘database_id’])

Ім'я бази даних

DB_ID

([‘database_name’])

Ідентифікаційний номер бази даних

GETANSINULL

([‘database_name’])

Повертає 1, якщо в стандарті ANSI визначена можливість появленя елементів NULL, або 0, якщо така здатність не визначена

OBJECT_ID

([‘object_name’])

Ідентифікаційний номер об'єкта бази даних

OBJECT_NAME

(object_id)

Ім'я об'єкта бази даних

INDEX_COL

(‘table_name’, index_id, key_id)

Ім'я індексного стовпця

COL_LENGTH

(‘table_name’, column_name’)

Довжина стовпця

COL_NAME

(table_id, column_id)

Ім'я стовпця

DATALENGTH

(expression)

Реальна довжина вираження для деякого типу даних

IDENT_SEED

(‘tablr_or_view’)

Базове значення, що повертає як numeric (@@maxprecision, 0) для стовпця із властивістю IDENTITY

STARTS_DATE

(table_id, index_id)

Дата останнього обновлення статистичних данних по індексі index_id

COALESCE

(expression1, expression2, …, expression N)

Повертає перше ненульове вираження (не рівне NULL)

ISNULL

(expression, value)

Заміняє нульове значення вираження (NULL) заданим значенням

NULLIF

(expression1, expression2)

Повертає елемент NULL, якщо expression1 еквівалентно expression2

IDENT_INCR

(‘table_or_viuw’)

Збільшення ( щоповертає як numeric (@@maxprecision, 0)) для стовпця із властивістю IDENTITY

Використання функції ISNULL( ) і NULLIF( )

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

ISNULL (expression, value )

Функція NULLIF( ) повертає елемент NULL, якщо два вираження ідентичні. Якщо ж ні, то вона повертає значення першого вираження. Функція NULLIF звичайно використається з оператором CASE. У наступному прикладі функція NULLIF( ) повертає NULL для ідентичних рядків і перший параметр - для різних:

SELECT NULLIF ('Same', 'Same'), SPACE(2),

NULLIF ('Same', 'Different')

______ ______ _______

NULL Same

(1 row (s) affected )

Використання функції COALESCE ( )

Та форма функції COALESCE(), у якій застосовується синтаксис COALESCE(expression1, expression2), аналогічна функції NULLIF(). Але, на відміну від її, двухпараметрична функція COALESCE() повертає значення вираження expression2, коли знаходить елемент NULL, і значення вираження expression1, коли не знаходить його.

Функція COALESCE() може містити більше двох параметрів. У цьому випадку функція COALESCE() повертає значення найпершого ненульового вираження, що перебуває в списку своїх параметрів. Якщо ж ненульових значень у списку параметрів ні, то функція COALESCE() повертає елемент NULL.

Використання наладнюючих функцій

Наладнюючі функції повертають ім'я користувача або значення лічильника, що автоматично міститься в рядок таблиці, у випадку, якщо в операторі INSERT або UPDATE було пропущене значення. ниладически функції визначаються як частина обмеження DEFAULT в операторі CREATE TABLE або ALTER TABLE. Ви можете використати кожну з наведених нижче наладнюючих функцій:

USER

CURRENT_USER

SESSION_USER

SISTEM_USER

CURRENT_TIMESTAMP

APP_NAME

Наладнюючі функції USER(), CURRENT_USER(), і SESSION_USER() повертають ім'я користувача бази даних, що виконує оператор INSERT або UPDATE. Функція SISTEM_USER() повертає реєстраційний ідентифікатор користувача. Функція CURRENT_TIMESTAMP() повертає поточну дату й час у тій же формі, що й функція GETDATE (). І, нарешті, функція APP_NAME повертає ім'я додатка для поточного сеансу, якщо воно було визначено.

Наладнюючі функції не можна використати поза обмеженням DEFAULT оператора CREATE TABLE або ALTER TABLE. Наприклад, їх не можна застосовувати в директиві SELECT оператора SELECT.

HAVING

(маючи) у результаті лише ті групи, які задовольняють зазначеному переліку умов відбору груп

і має формат

SELECT [[ALL] | DISTINCT]{ * | елемент_SELECT [,елемент_SELECT] ...}

FROM {базова_таблиця | подання} [псевдонім]

[,{базова_таблиця | подання} [псевдонім]] ...

[WHERE фраза]

[GROUP BY фраза [HAVING фраза]];

Елемент_SELECT - це одна з наступних конструкцій:

[таблиця.]* | значення | SQL_функція | системна_змінна

де значення - це:

[таблиця.]стовпець | (вираження) | константа | змінна

Синтаксис виражень має вигляд

( {[ [+] | - ] {значення | функція_СУБД} [ + | - | * | ** ]}... )

а синтаксис SQL_функцій - одна з наступних конструкцій:

{SUM|AVG|MIN|MAX|COUNT} ( [[ALL]|DISTINCT][таблиця.]стовпець )

{SUM|AVG|MIN|MAX|COUNT} ( [ALL] вираження )

COUNT(*)

Фраза WHERE включає набір умов для відбору рядків:

WHERE [NOT] WHERE_умова [[AND|OR][NOT] WHERE_умова]...

де WHERE_умова - одна з наступних конструкцій:

значення { = | <> | < | <= | | = } { значення | ( підзапит ) }

значення_1 [NOT] BETWEEN значення_2 AND значення_3

значення [NOT] IN { ( константа [,константа]... ) | ( підзапит ) }

значення IS [NOT] NULL

[таблиця.]стовпець [NOT] LIKE 'рядок_символів' [ESCAPE 'символ']

EXISTS ( підзапит )

Крім традиційних операторів порівняння (= | < | < | <= | | =) в WHERE фразі використаються умови BETWEEN (між), LIKE (схоже на), IN (належить), IS NULL (не визначене) і EXISTS (існує), які можуть випереджатися оператором NOT (не). Критерій відбору рядків формується з одного або декількох умов, з'єднаних логічними операторами:

AND

- коли повинні задовольнятися обоє поділюваних за допомогою AND умови;

OR

- коли повинне задовольнятися одне з поділюваних за допомогою OR умов;

AND NOT

- коли повинне задовольнятися перша умова й не повинне друге;

OR NOT

- коли або повинне задовольнятися перша умова або не повинне задовольнятися друге, причому існує пріоритет AND над OR (спочатку виконуються всі операції AND і тільки після цього операції OR). Для одержання бажаного результату WHERE умови повинні бути уведені в правильному порядку, якому можна організувати введенням дужок.

При обробці умови числа рівняються алгебраїчно - від’ємні числа вважаються меншими, ніж додатні, незалежно від їхньої абсолютної величини. Рядка символів рівняються відповідно до їх подання в коді, використовуваному в конкретної СУБД, наприклад, у коді ASCII. Якщо рівняються два рядки символів, що мають різні довжини, більше коротка рядок доповнюється праворуч пробілами для того, щоб вони мали однакову довжину перед здійсненням порівняння.

Соседние файлы в папке Учебное пособие