Списък на числови функции
Както казахме по-горе, не е достатъчно СУБД просто да съхранява данни от определен тип, тя също трябва да поддържа обширен набор от супер бързи операции върху данни от тези типове.
И Howто знаете, всички СУБД поддържат различни числови типове и операции върху тях. Днес ще се запознаете с най-популярните от тях.
Всички цифрови функции в MySQL могат условно да бъдат разделени на 5 групи:
- Аритметични операции
- Битови операции
- Функции за закръгляване
- Алгебрични функции
- Тригонометрични функции
Между другото, вие сте запознати с много от тях благодарение на езика Java, така че мисля, че няма да са изненада за вас. Но да започнем по ред.
Пълният списък с функции можете да намерите тук .
Аритметични операции
По принцип няма нищо неочаквано, всички същите стандартни операции като другаде:
# | Пример | ||
---|---|---|---|
1 | +, -, *, / | 2+2*2 | Събиране, изваждане, умножение, деление (не перфектно!) |
2 | % | 13% 5 | Остатък от делението |
3 | MOD | 13MOD5 | Остатък от делението |
4 | DIV | 13 РАЗДЕЛ 5 | Деление с цяло число |
От интересното: при разделяне на две цели числа се получава реално число. За да разделите на цяло число, трябва да използвате оператора DIV.
Ако искате да получите остатъка от деление на цяло число, тогава трябва да използвате оператора MOD or %, Howто е в езика Java. Няма да давам примери, тъй като за мен всичко е очевидно тук.
Битови операции
Можете също да извършвате побитови операции с числа в SQL, подобно на Java. Въпреки че има нюанси. Списъкът с налични битови операции е представен в tableта по-долу:
# | Пример | Забележка | ||
---|---|---|---|---|
1 | и | 0b1111 и 0b1000 | Побитово И | |
2 | | | 0b1111 | 0b0001 | Побитово ИЛИ | |
3 | ^ | 0b1111^0b1111 | Бит XOR | |
4 | ~ | ~0b1111 | побитова инversion | |
5 | >> | 128 >> 5 | Преместване на малко надясно | |
6 | << | 2 << 5 | Малко изместване наляво | |
7 | BIT_COUNT() | BIT_COUNT (255) | Връща броя битове, които са 1 |
Преди MySQL version 8.0 такива операции можеха да се извършват само с типа данни BIGINT, който беше дълъг 64 бита и беше подобен на дългия тип на Java. Въпреки това, в MySQL 8.0 (който обмисляме), концепцията се е променила. Сега тези операции могат да се извършват върху специални двоични типове:
- ДВОИЧЕН
- ВАРБИНАРИЯ
- А също и върху типове BLOB (които са масив от byteове)
Всички други типове просто се преобразуват в типа BIGINT и операциите се изпълняват Howто преди (само върху първите 64 бита).
Функции за закръгляване
За закръгляване в MySQL се използват до болка познати за вас функции. Списък с тях е даден в tableта по-долу:
# | Пример | Забележка | |
---|---|---|---|
1 | CEIL(), CEILING() | CEIL (5.1) = 6 | Закръглява реално число нагоре |
2 | ЕТАЖ() | FLOOR(5,9) = 5 | Закръглява реално число надолу |
3 | КРЪГЪЛ() | КРЪГ(4,1) = 4 | Закръглява реално число до най-близкото цяло число |
4 | TRUNCATE() | TRUNCATE(4.123; 2) = 4.12 | Съкращава число до N знака след десетичната запетая |
5 | РАНД() | 0,61914388706828 | Връща произволно реално число между 0 и 1 |
6 | RAND(N) | 0,93845168309142 | Връща произволно реално число между 0 и 1. N се използва като начална стойност |
Вие сте запознати с всички функции за закръгляване от първото търсене в Java. Само функциите TRUNCATE() и RANDOM(N) могат да представляват интерес тук.
Функцията TRUNCATE (число, количество) приема като първи параметър реално число, а като втори параметър броя десетични знаци, които трябва да бъдат оставени. Числото се изрязва до желания брой десетични знаци.
Що се отнася до функцията RAND(N), нещата са малко по-сложни. Както вероятно знаете, компютърът не може да генерира произволни числа. Вместо това, той генерира така наречената псевдослучайна числова последователност. Тоест, гледайки едно число, не е ясно дали е случайно or не, но последователността от числа може вече да е подобна на случайна. Разработчиците се възползват от това, като генерират поредица от числа, която е много подобна на произволна.
В този случай всяко ново число от поредицата се генерира според сложно правило, базирано на предишното число от тази поредица . Следователно, ако предадете определено начално число (наричано също начално число) към алгоритъма за генериране на произволни числа, тогава всеки път ще получавате една и съща последователност от произволни числа .
GO TO FULL VERSION