Come controllare in una tabella MariaDB-MySQL se il valore di una colonna char o varchar è un numero.

22 febbraio 2016

​Supponiamo di avere un campo testuale che possa contenere valori "numerici" del tipo 01,02...10,11,... ed altri alfanumerici del tipo AA1, AA2....

Come possiamo verificare quelli numerici? Una soluzione può essere quella di sfruttare la funzione CAST con una espressione del tipo CAST(nome_colonna AS UNSIGNED).

Infatti
MariaDB > SELECT CAST('01' AS UNSIGNED);
+------------------------+
| CAST('01' AS UNSIGNED) |
+------------------------+
| 1 |
+------------------------+
1 row in set (0.00 sec)
fornirà come risultato il valore 1 .
Mentre
MariaDB > SELECT CAST('AA1' AS UNSIGNED);
+------------------------+
| CAST('AA1' AS UNSIGNED)|
+------------------------+
| 0 |
+------------------------+
1 row in set (0.00 sec), 1 warning (0.00 sec)
fornirà il valore 0.

Attenzione la soluzione proposta non funzionerà se la colonna può contenere valori del tipo 12AA perchè in questo caso:
CAST('12AA' AS UNSIGNED) fornirà come risultato il valore 12