Лекція 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(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(expr1, expr2)
Ця функція повертає аргумент expr2, якщо вираз expr1 має значення NULL. В іншому випадку ця функція повертає значення expr1. Функція INFULL() повертає число або рядок в залежності від контексту, в якому задається.
IFNULL(NULL, 'NULL') -> 'NULL'
IFNULL(' not NULL', 'NULL') -> 'not NULL'
ISNULL(expr)
Ця функція повертає значення 1, якщо вираз expr має значення NULL. В іншому випадку ця функція повертає значення 0.
ISNULL(NULL) ->1
ISNULL(0) ->0
ISNULL(1) ->0
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(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(x)
Ця функція повертає абсолютне значення аргументу х.
ABS(13.5) ->13.5
ABS(-13.5) ->13.5
ACOS(x)
Ця функція повертає арккосинус аргументу х або значення NULL, якщо х не знаходиться в діапазоні від -1 до +1.
ACOS(1) ->0.000000
ACOS(0) ->1.570796
ACOS(-1) ->3.141593
Функція ACOS() вперше з'явилась в MySQL 3.21.8.
ASIN(x)
Ця функція повертає арксинус аргументу х або значення NULL, якщо х не знаходиться в діапазоні від -1 до +1.
ASIN(1) ->1.570796
ASIN(0) ->0.000000
ASIN(-1) ->-1.570796
Функція ASIN() вперше з'явилась в MySQL 3.21.8.
ATAN(x)
ATAN(y, x)
Ця функція повертає арктангенс аргументу х.
ATAN(1) ->0.785398
ATAN(0) ->0.000000
ATAN(-1) ->-0.785398
Функція ATAN() вперше з'явилась в MySQL 3.21.8.
CEILING(x)
Ця функція повертає найменше ціле не менше аргументу х.
CEILING(3.8) ->4
CEILING(-3.8) ->-3
COS(x)
Ця функція повертає косинус аргументу х, заданого в радіанах.
OS(0) ->1.000000
OS(PI() ) ->-1.000000
OS(PI() / 2) ->0.000000
Функція COS() вперше з'явилась в MySQL 3.21.8.
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(x)
Ця функція повертає значення аргументу х, перетвореного з радіан в градуси.
DEGREES(PI() ) ->180
DEGREES(PI() * 2) ) ->360
DEGREES(PI() / 2) ) ->90
DEGREES(-PI() ) ) ->-180
Функція DEGREES() вперше з'явилась в MySQL 3.21.16.
EXP(x)
Ця функція повертає значення e в степені х, де e - це основа натурального логарифма.
EXP(1) ->2.718282
EXP(2) ->7.389056
EXP(-1) ->0.367879
1/EXP(1) -> 0.36787944
FLOOR(x)
Ця функція повертає найбільше ціле значення, яке не більше аргументу х.
FLOOR(3.8) ->3
FLOOR(-3.8) ->-4
LN(x)
Являється синонімом функції LOG() та вперше з'явилась в MySQL 4.0.3.
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(х)
Ця функція повертає логарифм з основою 10 аргументу х.
LOG10(0) ->NULL
LOG10(10) ->1.000000
LOG10(100) ->2.000000
LOG2(х)
Ця функція повертає логарифм з основою 2 аргументу х.
LOG2(0) ->NULL
LOG2(255) ->7.994353
LOG2(32767) ->14.999956
Функція LOG2() дозволяє визначити довжину значення в бітах. Одним з його використань є визначення пам'яті, необхідної для зберігання значення. Функція LOG2() вперше з'явилась в MySQL 4.0.3.
MOD(m, n)
Ця функція аналогічна оператору m%n (остача від ділення націло). Більш детально про його роботу розповідається в розділі "Арифметичні оператори".
PI()
Повертає значення числа Пі.
PI() ->3.141593
Функція PI() вперше з'явилась в MySQL 3.21.8.
POW(x, y)
Повертає х в степені у.
POW(2, 3) ->8.000000
POW(2, -3) ->0.125000
POW(4, .5) ->2.000000
POW(16, .25) ->2.000000
POWER(x, y)
Ця функція являється аналогом функції POW() і вперше з'явилась в MySQL 3.21.16.
RADIANS(x)
Ця функція повертає значення аргументу х, яке перетворене з градусів в радіани.
RADIANS(0) ->0
RADIANS(360) ->6.2831853071796
RADIANS(-360) ->- 6.2831853071796
Функція RADIANS() вперше з'явилась в MySQL 3.21.16.
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(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(x)
Ця функція повертає значення -1, 0 або 1, якщо значення аргументу х відповідно від'ємне, рівне нулю або додатне.
SIGN(15.803) ->1
SIGN(0) ->0
SIGN(-99) ->-1
SIN(x)
Ця функція повертає синус аргументу х, заданого в радіанах.
SIN(0) ->0.000000
SIN(PI()) ->0.000000
SIN(PI() / 2) ->1.000000
Функція SIN() вперше з'явилась в MySQL 3.21.8.
SQRT(x)
Ця функція повертає додатній квадратний корінь аргументу х.
SQRT(625) ->25.000000
SQRT(2.25) ->1.500000
SQRT(-1) ->NULL
TAN(x)
Ця функція повертає тангенс аргументу х, заданого в радіанах.
TAN(0) ->0.000000
TAN(PI() / 4) ->1.000000
Функція TAN() вперше з'явилась в MySQL 3.21.8.
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.