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șteTRUNCATE()sauFLOOR().
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).