CAST() în MySQL

Conversii de tip MySQL 5.0+

Convertește o valoare într-un alt tip: SIGNED, UNSIGNED, DECIMAL, CHAR, DATE, DATETIME, JSON etc.

Sintaxă
CAST(expresie AS tip)

Ce face CAST()

CAST() este forma standard pentru conversii. Tipuri uzuale: SIGNED și UNSIGNED (numere întregi), DECIMAL(m,d), CHAR, DATE, DATETIME, TIME, JSON, BINARY.

Un text care nu e număr complet este convertit cât se poate ('123abc' → 123), cu un avertisment. Vechiul operator BINARY expr este depreciat; scrie CAST(expr AS BINARY).

Parametri

Parametru Descriere
expresie Valoarea convertită.
tip Tipul dorit.

Ce returnează

Valoarea convertită.

Exemple

Exemplul 1: Conversii uzuale

SELECT CAST('42' AS UNSIGNED) + 1 AS numar,
       CAST(3.7 AS SIGNED) AS rotunjit,
       CAST('2026-10-19' AS DATE) AS data,
       CAST(10 AS DECIMAL(6,2)) AS zecimal;

Rezultat

+-------+----------+------------+---------+
| numar | rotunjit | data       | zecimal |
+-------+----------+------------+---------+
|    43 |        4 | 2026-10-19 |   10.00 |
+-------+----------+------------+---------+

Exemplul 2: Text parțial numeric

SELECT CAST('123abc' AS UNSIGNED) AS rezultat;

Rezultat

+----------+
| rezultat |
+----------+
|      123 |
+----------+
Warning (Code 1292): Truncated incorrect INTEGER value: '123abc'

Exemplul 3: Sortare corectă a numerelor stocate ca text

CREATE TABLE coduri (cod VARCHAR(5));
INSERT INTO coduri VALUES ('10'), ('9'), ('100');

SELECT cod FROM coduri ORDER BY CAST(cod AS UNSIGNED);

Rezultat

+------+
| cod  |
+------+
| 9    |
| 10   |
| 100  |
+------+

Greșeli frecvente

  • Te aștepți ca CAST(3.7 AS SIGNED) să taie zecimalele. MySQL rotunjește (rezultatul este 4); pentru tăiere folosește TRUNCATE() sau FLOOR().

Comenzi înrudite

  • CONVERT(): Convertește o valoare în alt tip (ca CAST) sau un text în alt set de caractere.
  • TRUNCATE(): Taie un număr la un număr de zecimale, fără rotunjire.
  • STR_TO_DATE(): Transformă un text într-o dată, după formatul în care este scris (ex. 19.10.2026).