Mysql
 sql >> Database >  >> RDS >> Mysql

MySQL Cast come booleano

A volte potrebbe essere necessario eseguire il cast dei dati come booleani in MySQL. Ecco come eseguire il cast come booleano in MySQL. Vedremo come lanciare string come booleano e come cast int come booleano.

Come trasmettere come booleano in MySQL

Ecco i passaggi per eseguire il cast come booleano in MySQL. MySQL ti consente di trasmettere dati utilizzando le funzioni CAST e CONVERT. Tuttavia, nessuno dei due supporta la conversione in tipo di dati booleano, immediatamente. Devi invece eseguire il cast come UNSIGNED INT. Diamo un'occhiata a un esempio per eseguire il cast di string come booleano

Bonus Lettura:MySQL CAST vs CONVERT

Come trasmettere String come booleano

Supponiamo che tu abbia la seguente colonna di stringa prodotto che contiene valori di stringa

mysql> select product from product_orders;
+---------+
| product |
+---------+
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
| A       |
| B       |
| C       |
+---------+

Diciamo che vuoi convertire la stringa in booleano dove product =True se è A else False, allora ecco la query SQL per lanciare la stringa come booleana.

mysql> select cast(product='A' as unsigned) from product_orders;
+-------------------------------+
| cast(product='A' as unsigned) |
+-------------------------------+
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
|                             1 |
|                             0 |
|                             0 |
+-------------------------------+

Nella query di cui sopra, si prega di notare,

1. Trasformiamo il tipo di dati UNSIGNED in quanto né le funzioni CAST né CONVERT supportano la conversione diretta in un tipo di dati booleano

2. MySQL salva i dati booleani come tinyint(1), ovvero 1 o 0, e non come valori True/False. Poiché tinyint può essere facilmente salvato come unsigned int, convertiamo string in unsigned int.

3. Usiamo un'espressione condizionale (product='A') all'interno del cast il cui output è booleano. Non è possibile convertire direttamente una colonna stringa in booleana utilizzando CAST o CONVERT. Ecco l'output che otterrai se provi a farlo.

mysql> select cast(product as unsigned) from product_orders;
+---------------------------+
| cast(product as unsigned) |
+---------------------------+
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
|                         0 |
+---------------------------+

Puoi modificare l'espressione condizionale di cui hai bisogno. Ad esempio, ecco la query SQL se vuoi convertire product =A o product =B come true e resto come false.

mysql> select cast(product='A' or product='B' as unsigned) from product_orders;
+----------------------------------------------+
| cast(product='A' or product='B' as unsigned) |
+----------------------------------------------+
|                                            1 |
|                                            1 |
|                                            0 |
|                                            1 |
|                                            1 |
|                                            0 |
|                                            1 |
|                                            1 |
|                                            0 |
+----------------------------------------------+

oppure puoi anche utilizzare la seguente query per ottenere lo stesso risultato.

mysql> select cast(product in ('A','B') as unsigned) from product_orders;

Come trasmettere Int come booleano

Supponiamo che tu abbia la seguente colonna int importo nella tua tabella.

mysql> select amount from product_orders;
+--------+
| amount |
+--------+
|    250 |
|    150 |
|    200 |
|    250 |
|    210 |
|    125 |
|    350 |
|    225 |
|    150 |
+--------+

Diciamo che vuoi convertire int in booleano dove importo<200 è Vero, altrimenti Falso. Ecco la query SQL per eseguire il cast int come booleano.

mysql> select cast(amount<200 as unsigned) from product_orders;
+------------------------------+
| cast(amount<200 as unsigned) |
+------------------------------+
|                            0 |
|                            1 |
|                            0 |
|                            0 |
|                            0 |
|                            1 |
|                            0 |
|                            0 |
|                            1 |
+------------------------------+

Puoi anche utilizzare MySQL Convert al posto di MySQL CAST per ciascuna delle query precedenti. Ecco un esempio della query precedente, utilizzando MySQL CONVERT.

mysql> select convert(amount<200, unsigned) from product_orders;

Si spera che ora puoi facilmente eseguire il cast come booleano in MySQL.

Ubiq semplifica la visualizzazione dei dati in pochi minuti e il monitoraggio in dashboard in tempo reale. Provalo oggi!