MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como TRUNCATE() funciona no MariaDB


No MariaDB, TRUNCATE() é uma função numérica interna que retorna um determinado número, truncado para um determinado número de casas decimais.

Sintaxe


A sintaxe fica assim:
TRUNCATE(X,D)

Onde X é o valor a ser truncado e D especifica quantas casas decimais devem ser truncadas.

Exemplo


Aqui está um exemplo:
SELECT TRUNCATE(1.25817, 2);

Resultado:
+----------------------+
| TRUNCATE(1.25817, 2) |
+----------------------+
|                 1.25 |
+----------------------+

Aqui estão mais alguns:
SELECT 
    TRUNCATE(1.25817, 1),
    TRUNCATE(1.25817, 2),
    TRUNCATE(1.25817, 3),
    TRUNCATE(1.25817, 4);

Resultado (usando saída vertical):
TRUNCATE(1.25817, 1): 1.2
TRUNCATE(1.25817, 2): 1.25
TRUNCATE(1.25817, 3): 1.258
TRUNCATE(1.25817, 4): 1.2581

Casas decimais negativas


O segundo argumento pode ser um valor negativo, se necessário. Passar um valor negativo faz com que os dígitos fiquem à esquerda da casa decimal para se tornar zero.

Exemplo:
SELECT TRUNCATE(5824.17, -2);

Resultado:
+-----------------------+
| TRUNCATE(5824.17, -2) |
+-----------------------+
|                  5800 |
+-----------------------+

Comparado com ROUND()


O TRUNCATE() função é diferente da ROUND() função. O ROUND() função arredonda o número para cima em alguns casos e para baixo em outros. O TRUNCATE() A função, por outro lado, simplesmente trunca o número sem arredondamento.

Aqui está uma comparação para demonstrar essa diferença:
SELECT 
    TRUNCATE(3.6789, 2),
    ROUND(3.6789, 2);

Resultado:
+---------------------+------------------+
| TRUNCATE(3.6789, 2) | ROUND(3.6789, 2) |
+---------------------+------------------+
|                3.67 |             3.68 |
+---------------------+------------------+

Também é diferente do FLOOR() função, que retorna o maior valor inteiro não maior que seu argumento. FLOOR() não aceita um segundo argumento como ROUND() e TRUNCATE() do (ele sempre retorna um inteiro de qualquer maneira).

Argumentos não numéricos


Veja o que acontece quando fornecemos um argumento não numérico:
SELECT TRUNCATE('Ten', 'Two');

Resultado:
+------------------------+
| TRUNCATE('Ten', 'Two') |
+------------------------+
|                      0 |
+------------------------+
1 row in set, 3 warnings (0.000 sec)

Vamos verificar o aviso:
SHOW WARNINGS;

Resultado:
+---------+------+------------------------------------------+
| Level   | Code | Message                                  |
+---------+------+------------------------------------------+
| Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
| Warning | 1292 | Truncated incorrect DOUBLE value: 'Ten'  |
| Warning | 1292 | Truncated incorrect INTEGER value: 'Two' |
+---------+------+------------------------------------------+

Contagem de argumentos inválida


Chamando TRUNCATE() com o número errado de argumentos, ou sem um argumento resulta em um erro:
SELECT TRUNCATE();

Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1

E:
SELECT TRUNCATE(1, 2, 3);

Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ' 3)' at line 1