Conversione dei tipi
Quando MariaDB usa operandi di tipi differenti avviene una conversione implicita dei tipi, per rendere compatibili i valori.
E' una buona pratica non affidarsi alla conversione implicita; è meglio usare CAST per convertirli esplicitamente.
Regole per la conversione
- Se uno degli argomenti è NULL, il risultato della comparazione è NULL, tranne nel caso in cui venga usato l'operatore <=> per l'uguaglianza NULL-safe.
- Se entrambi gli argomenti sono interi,vengono comparati come interi.
- Se entrambi gli argomenti sono stringhe, vengono comparati come stringhe.
- Se uno degli argomenti è decimale e l'altro è decimale o intero, vengono comparati come decimali.
- Se uno degli argomenti è decimale e l'altro è a virgola mobile, vengono comparati come numeri a virgola mobile.
- Se un argomento esadecimale è comparato con un numero, viene trattato come stringa binaria.
- Se una costante viene comparata con un valore TIMESTAMP o DATETIME, la costante viene convertita in timestamp, a meno che non sia usata come argomento in una funzione IN.
- Negli altri casi, gli argomenti sono comparati come numeri a virgola mobile, o reali.
Esempi
Convertire una stringa in un numero:
MariaDB [(none)]> SELECT 15+'15'; +---------+ | 15+'15' | +---------+ | 30 | +---------+
Convertire un numero in una stringa:
MariaDB [(none)]> SELECT CONCAT(15,'15'); +-----------------+ | CONCAT(15,'15') | +-----------------+ | 1515 | +-----------------+
Errori dei numeri a virgola mobile:
MariaDB [(none)]> SELECT '9746718491924563214' = 9746718491924563213; +---------------------------------------------+ | '9746718491924563214' = 9746718491924563213 | +---------------------------------------------+ | 1 | +---------------------------------------------+
Content reproduced on this site is the property of its respective owners,
and this content is not reviewed in advance by MariaDB. The views, information and opinions
expressed by this content do not necessarily represent those of MariaDB or any other party.