MariaDB
 sql >> база данни >  >> RDS >> MariaDB

Как работи TRUNCATE() в MariaDB

В 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MariaDB FIELD() срещу FIND_IN_SET():Каква е разликата?

  2. Как NOT REGEXP работи в MariaDB

  3. MariaDB Connector/Python бета вече е наличен

  4. Как LTRIM() работи в MariaDB

  5. Най-често срещани проблеми с MHA и как да ги поправите