Лекція 7. Семестр 1. Функції в mySQL (Частина 1)

 


Функції порівняння

 

 GREATEST 
GREATEST( expr 1, expr 2, . . .) 

 

         Повертає найбільший аргумент. Найбільший серед заданих аргументів визначається згідно з наступними правилами. 

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

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

         Якщо перші два правила не підходять, аргументи порівнюються як рядки. Реєстр символів при порівнянні враховується лише в тому разі, як би один із заданих аргументів являється двійковим рядком. 

 

GREATEST(2, 3, 1) ->3 

GREATEST(38. 5, 94. 2, - 1) ->94.2 

GREATEST('a', 'ab', 'abc') ->'abc' 

GREATEST(1, 3, 5) ->5 

GREATEST('A', 'B', 'C') ->"C" 

GREATEST(BINARI 'A', ' B', 'C') ->"b"

 

         Функція GREATEST() вперше з'явилась в MySQL 3.22.5. В більш ранніх версіях замість неї можна використовувати функцію MAX() . 

 

IF 

IF(expr1, expr2, expr3) 
 

         Якщо аргумент expr1 правильний(не 0 або NULL), повертається аргумент expr2. В іншому випадку ця функція аргумент expr3. Функція IF() повертає число або рядок у відповідності з контекстом, в якому задається. 

 

IF(1, 'true', 'false') ->'true'   
IF(0, 'true', 'false') -> 'false'          
IF(NULL, 'true', 'false') -> 'false'  
IF(1.3, 'non-zero', 'zero') -> 'non-zero' 
IF(0.3, 'non-zero', 'zero') -> 'zero'         
IF(0.3 != 0, 'non-zero', 'zero') -> 'non-zero'

 

         Аргумент expr1 вираховується як ціле значення і в останніх трьох прикладах показано яка помилка може виникнути через неуважність користувача. Значення 1.3 перетворюється в ціле значення 1, яке являється істинним. Проте 0.3 перетворюється в ціле значення 0, яке є невірним. В останньому прикладі списку показаний правильний варіант використання чисел з плаваючою комою. Скористайтесь ним при виконанні порівняння. В результаті цього порівняння повернеться 1 або 0 в залежності від результату перевірки. 

 

IFNULL 

IFNULL(expr1, expr2) 

 

         Ця функція повертає аргумент expr2, якщо вираз expr1 має значення NULL. В іншому випадку ця функція повертає значення expr1. Функція INFULL() повертає число або рядок в залежності від контексту, в якому задається. 

 

IFNULL(NULL, 'NULL') -> 'NULL'        
IFNULL(' not NULL', 'NULL') -> 'not NULL'

 

ISNULL 

ISNULL(expr) 

         Ця функція повертає значення 1, якщо вираз expr має значення NULL. В іншому випадку ця функція повертає значення 0. 

 

ISNULL(NULL) ->1    
ISNULL(0) ->0  
ISNULL(1) ->0

 

LEAST 

LEAST(expr1, expr2, ...) 

 

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

 

LEAST(2, 3, 1) ->1    
LEAST(38.5, 94.2, -1) ->-1.0       
LEAST('a', 'ab', 'abc') ->'a'

 

         Функція LEAST() вперше з'явилась в MySQL 3.22.5. В більш ранніх версіях замість неї використовують функцію MIN(). 

 

STRCMP 

STRCMP(str1, str2) 

 

         Ця функція повертає результат 1, 0, -1, якщо перший аргумент лексично більший, рівний чи менший за другий. Результат буде NULL, якщо хоча б один з аргументів має значення NULL. Починаючи з MySQL 4.0.0, при порівнянні регістр символів не враховується, за винятком тих випадків, якщо один з аргументів є бінарним рядком. 

 

STRCMP('a', 'a') ->0 
STRCMP('a', 'A') ->0 
STRCMP('A', 'a') ->0 
STRCMP(BINARY 'a', 'A') ->1    
STRCMP(BINARY 'A', 'a') ->-1

 

Функція перетворення

 

         Ці функції використовуються для перетворення виразів з одного типу в інший.

 

CAST

CAST(expr AS type)

 

         Перетворювати тип значення expr в заданий тип. Значення type може бути BINARY(подвійний рядок), DATE, DATETIME, TIME, SIGNED, SIGNED INTEGER, UNSIGNED або UNSIGNED INTEGER.

 

CAST(304 AS BINARY) >'304'   
CAST(-1 AS UNSIGNED) >18446744073709551615

 

         Функція CAST() може знадобитися для зміни типів стовпців.

Функція CAST() з'явилась в MySQL 4.0.2.

 

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

 

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

 

ABS 

ABS(x) 

 

         Ця функція повертає абсолютне значення аргументу х. 

 

ABS(13.5) ->13.5 
ABS(-13.5) ->13.5 

 

ACOS 

ACOS(x) 

 

         Ця функція повертає арккосинус аргументу х або значення NULL, якщо х не знаходиться в діапазоні від -1 до +1. 

 

ACOS(1) ->0.000000         
ACOS(0) ->1.570796         
ACOS(-1) ->3.141593 

 

Функція ACOS() вперше з'явилась в MySQL 3.21.8. 

 

ASIN 

ASIN(x) 

 

         Ця функція повертає арксинус аргументу х або значення NULL, якщо х не знаходиться в діапазоні від -1 до +1. 

 

ASIN(1) ->1.570796  
ASIN(0) ->0.000000  
ASIN(-1) ->-1.570796 

 

         Функція ASIN() вперше з'явилась в MySQL 3.21.8. 

 

ATAN 

ATAN(x) 

ATAN(y, x) 

 

         Ця функція повертає арктангенс аргументу х. 

 

ATAN(1) ->0.785398 
ATAN(0) ->0.000000 
ATAN(-1) ->-0.785398 

 

         Функція ATAN() вперше з'явилась в MySQL 3.21.8. 

 

CEILING 

CEILING(x) 

 

         Ця функція повертає найменше ціле не менше аргументу х. 

 

CEILING(3.8) ->4 
CEILING(-3.8) ->-3 

 

COS 

COS(x) 

 

         Ця функція повертає косинус аргументу х, заданого в радіанах. 

 

         OS(0) ->1.000000 
         OS(PI() ) ->-1.000000 
         OS(PI() / 2) ->0.000000 

 

         Функція COS() вперше з'явилась в MySQL 3.21.8. 

 

COT 

COT(x) 

 

         Ця функція повертає котангенс аргументу х, заданого в радіанах. 

 

         COT (PI() / 2) ->0.000000 
         COT(PI() / 4) ->1.000000 

 

         Функція COТ() вперше з'явилась в MySQL 3.21.8. 

 

CRC32 
CRC32(str) 

 

         Вираховує значення коду циклічної перевірки збитковості аргументу, який являється рядком. Повернуте число є 32-бітовим значенням без знака в діапазоні від 0 до 2^32-1 або NULL, якщо аргумент має значення "NULL". 

 

CRC32('xyz') ->3951999591 

CRC32('0') ->4108050209 

CRC32(0) -> 4108050209 

CRC32(NULL) -> NULL 

 

         Функція CRC32() вперше з'явилась в MySQL 4.1.0. 

 

DEGREES 

DEGREES(x) 

 

         Ця функція повертає значення аргументу х, перетвореного з радіан в градуси. 

        

         DEGREES(PI() ) ->180 
         DEGREES(PI() * 2) ) ->360 
         DEGREES(PI() / 2) ) ->90 
         DEGREES(-PI() ) ) ->-180 

 

         Функція DEGREES() вперше з'явилась в MySQL 3.21.16. 

 

EXP 

EXP(x) 

 

         Ця функція повертає значення e в степені х, де e - це основа натурального логарифма. 

 

         EXP(1) ->2.718282   
         EXP(2) ->7.389056   
         EXP(-1) ->0.367879  
         1/EXP(1) -> 0.36787944 

 

FLOOR 

FLOOR(x) 

 

         Ця функція повертає найбільше ціле значення, яке не більше аргументу х. 

 

         FLOOR(3.8) ->3 
         FLOOR(-3.8) ->-4 

 

LN 

LN(x) 

 

         Являється синонімом функції LOG() та вперше з'явилась в MySQL 4.0.3. 

 

LOG 

LOG(x) 

LOG(b, x) 

 

         Ця функція повертає натуральний(з основою е) логарифм аргументу х. 

 

LOG(0) ->NULL 
LOG(1) ->0.000000 
LOG(2) ->0.693147 
LOG(EXP(1) ) ->1.000000 

 

         Формат з двома аргументами повертає логарифм х з основою b. 

        

         LOG(10, 100) ->2.00000000 
         LOG(2, 256) ->2.000000 

 

         Формат з двома аргументами вперше появився в MySQL 4.0.3. В ранніх версіях функцію LOG() використовують для вирахування логарифма з основою b аргументу х, використовуючи формулу LOG(х)/LOG(b). 

        

         LOG(100)/LOG(10) ) ->2.00000000    
         LOG10(100) ) ->2.000000 

 

LOG10 

LOG10(х) 

 

         Ця функція повертає логарифм з основою 10 аргументу х. 

 

LOG10(0) ->NULL 
LOG10(10) ->1.000000 
LOG10(100) ->2.000000 

 

LOG2 

LOG2(х) 

 

         Ця функція повертає логарифм з основою 2 аргументу х. 

 

LOG2(0) ->NULL 
LOG2(255) ->7.994353 
LOG2(32767) ->14.999956 


         Функція LOG2() дозволяє визначити довжину значення в бітах. Одним з його використань є визначення пам'яті, необхідної для зберігання значення. Функція LOG2() вперше з'явилась в MySQL 4.0.3. 

 

MOD 

MOD(m, n) 

 

         Ця функція аналогічна оператору m%n (остача від ділення націло). Більш детально про його роботу розповідається в розділі "Арифметичні оператори". 

 

PI 

PI() 

 

         Повертає значення числа Пі. 

 

PI() ->3.141593 

 

         Функція PI() вперше з'явилась в MySQL 3.21.8. 

 

POW

POW(x, y)

 

         Повертає х в степені у. 

 

POW(2, 3) ->8.000000 
POW(2, -3) ->0.125000 
POW(4, .5) ->2.000000 
POW(16, .25) ->2.000000 

 

POWER 

POWER(x, y)

 

         Ця функція являється аналогом функції POW() і вперше з'явилась в MySQL 3.21.16. 

 

RADIANS 

RADIANS(x) 

 

         Ця функція повертає значення аргументу х, яке перетворене з градусів в радіани. 

 

         RADIANS(0) ->0        
         RADIANS(360) ->6.2831853071796  
         RADIANS(-360) ->- 6.2831853071796 

 

         Функція RADIANS() вперше з'явилась в MySQL 3.21.16. 

 

RAND

RAND()

RAND(n)

 

         Функція RAND() повертає випадкове значення з плаваючою крапкою в діапазоні від 0.0 до 1.0. Функція RAND(n) виконує аналогічну дію, використовуючи n в якості початкового значення для генератора випадкових чисел. Всі виклики з одним і тим же значенням n повернуть один і той самий результат. Цю властивість можна використовувати, коли необхідно генерувати повторну послідовність чисел.(В перший раз RAND() викликається з аргументом n, а потім для отримання наступних чисел в послідовності викликається без аргументів.) 

 

         RAND(10) ->0.18109053110805         
         RAND(10) ->0.18109053110805         
         RAND() ->0.7502322306393      
         RAND() ->0.20788959060599    
         RAND(10) ->0.18109053110805         
         RAND() ->0.7502322306393      
         RAND() ->0. 20788959060599 

 

         В цих прикладах можна побачити які значення повертає функція RAND() при задані аргументу і його відсутності. Введення початкового значення для всіх клієнтів проводиться незалежно один від одного. Коли один клієнт викликає функцію RAND(n) для отримання випадкового числа, це ніяк не вплине на результати, отриманні іншими клієнтами. 

 

ROUND 

ROUND(x)

ROUND(x, d)

 

         Функція ROUND(x) повертає значення аргументу х, округлене до цілого числа. Функція ROUND(x, d) повертає значення аргументу х, округленого до числа з d знаками після коми. Якщо аргумент d рівний 0, то повернутий результат не має десяткової точки чи дробової частини. 

 

         ROUND(15.3) ->15    
         ROUND(15.5) ->16    
         ROUND(-33.27834,2) ->-33.28   
         ROUND(1, 4) ->1.0000 

 

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

 

SIGN 

SIGN(x) 

 

         Ця функція повертає значення -1, 0 або 1, якщо значення аргументу х відповідно від'ємне, рівне нулю або додатне. 

 

         SIGN(15.803) ->1      
         SIGN(0) ->0       
         SIGN(-99) ->-1 

 

SIN

SIN(x)

 

         Ця функція повертає синус аргументу х, заданого в радіанах. 

 

         SIN(0) ->0.000000 
         SIN(PI()) ->0.000000 
         SIN(PI() / 2) ->1.000000 

 

         Функція SIN() вперше з'явилась в MySQL 3.21.8. 

 

SQRT 

SQRT(x)

 

         Ця функція повертає додатній квадратний корінь аргументу х. 

        

         SQRT(625) ->25.000000 
         SQRT(2.25) ->1.500000 
         SQRT(-1) ->NULL 

 

TAN

TAN(x)

 

         Ця функція повертає тангенс аргументу х, заданого в радіанах. 

 

         TAN(0) ->0.000000 
         TAN(PI() / 4) ->1.000000 

 

         Функція TAN() вперше з'явилась в MySQL 3.21.8. 

 

TRUNCATE

TRUNCATE(x, d)

 

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

 

         TRUNCATE(1.23, 1) ->1.2 
         TRUNCATE(1.23, 0) ->1    
         TRUNCATE(1.23, 4) ->1.2300 

 

         Функція TRUNCATE() вперше з'явилась в MySQL 3.21.16.