В MariaDB, TRUNCATE()
е вградена числова функция, която връща дадено число, съкратено до определен брой десетични знака.
Синтаксис
Синтаксисът е така:
TRUNCATE(X,D)
Където X
е стойността за съкращаване и D
указва до колко десетични знака да се съкрати.
Пример
Ето един пример:
SELECT TRUNCATE(1.25817, 2);
Резултат:
+---------------------+| ОТСЪЩАНЕ(1.25817, 2) |+---------------------+| 1.25 |+----------------------+
Ето още няколко:
SELECT
TRUNCATE(1.25817, 1),
TRUNCATE(1.25817, 2),
TRUNCATE(1.25817, 3),
TRUNCATE(1.25817, 4);
Резултат (с помощта на вертикален изход):
ОТСЪРЗВАНЕ(1.25817, 1):1.2 ОТСЪРЖАВАНЕ(1.25817, 2):1.25 ОТСЪРЖАВАНЕ(1.25817, 3):1.258 ОТСЪРЗВАНЕ(1.25817, 4):1.2581
Отрицателни десетични знаци
Вторият аргумент може да бъде отрицателна стойност, ако е необходимо. Предаването на отрицателна стойност води до цифри в ляво от десетичната запетая да стане нула.
Пример:
SELECT TRUNCATE(5824.17, -2);
Резултат:
<пред>+-----------------------+| ОТСЪЩАНЕ(5824.17, -2) |+-----------------------+| 5800 |+-----------------------+В сравнение с ROUND()
TRUNCATE()
функцията е различна от ROUND()
функция. ROUND()
функцията закръглява числото нагоре в някои случаи и надолу в други. TRUNCATE()
функцията, от друга страна, просто съкращава числото без закръгляване.
Ето сравнение, за да демонстрирате тази разлика:
SELECT
TRUNCATE(3.6789, 2),
ROUND(3.6789, 2);
Резултат:
+---------------------+----------------+| ОТСЪЩАНЕ(3.6789, 2) | КРЪГЛА(3,6789, 2) |+---------------------+-----------------+| 3,67 | 3,68 |+---------------------+----------------+
Също така е различно от FLOOR()
функция, която връща най-голямата целочислена стойност, не по-голяма от нейния аргумент. FLOOR()
не приема втори аргумент като ROUND()
и TRUNCATE()
do (това така или иначе връща само цяло число).
Нечислови аргументи
Ето какво се случва, когато предоставим нечислов аргумент:
SELECT TRUNCATE('Ten', 'Two');
Резултат:
+-----------------------+| TRUNCATE('Десет', 'Две') |+------------------------+| 0 |+-----------------------+1 ред в комплект, 3 предупреждения (0,000 сек.)
Нека проверим предупреждението:
SHOW WARNINGS;
Резултат:
+--------+------+---------------------------- ------------+| Ниво | Код | Съобщение |+---------+------+------------------------------ ------------+| Предупреждение | 1292 | Съкратена неправилна INTEGER стойност:'Two' || Предупреждение | 1292 | Съкратена неправилна DOUBLE стойност:„Десет“ || Предупреждение | 1292 | Съкратена неправилна INTEGER стойност:'Two' |+---------+------+----------------------- -------------------+
Невалиден брой аргументи
Извикване на TRUNCATE()
с грешен брой аргументи или без аргумент води до грешка:
SELECT TRUNCATE();
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до ')' на ред 1
И:
SELECT TRUNCATE(1, 2, 3);
Резултат:
ГРЕШКА 1064 (42000):Имате грешка във вашия SQL синтаксис; проверете ръководството, което съответства на вашата версия на сървъра на MariaDB за правилния синтаксис, който да използвате близо до „3)“ на ред 1