systemadmin.es > DBA > Clausula CASE de MySQL

Clausula CASE de MySQL

Al realizar queries podemos modificar lo que devolvemos usando la clausula CASE, vamos a ver un ejemplo:

Supongamos que tenemos una columna que nos devuelve 4 o 2:

mysql> show status like 'wsrep%';
(...)
| wsrep_local_state            | 4                                               |
| wsrep_local_state_comment    | Synced                                          |
(...)
mysql> show status like 'wsrep%';
(...)
| wsrep_local_state            | 2                                                           |
| wsrep_local_state_comment    | Donor/Desynced                                              |
(...)

Mediante CASE podemos transformar el 2 en un 1 y el 4 en un 0, mucho más fácil de tratar con, por ejemplo, checks de nagios. En este caso se trata de una query contra information_schema.GLOBAL_STATUS:

mysql> SELECT case VARIABLE_VALUE when 4 then 0 when 2 then 1 else 2 end as glusterstatus FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_local_state";
+---------------+
| glusterstatus |
+---------------+
|             0 |
+---------------+
1 row in set (0.00 sec)

mysql> SELECT case VARIABLE_VALUE when 4 then 0 when 2 then 1 else 2 end as glusterstatus FROM information_schema.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_local_state";
+---------------+
| glusterstatus |
+---------------+
|             1 |
+---------------+
1 row in set (0.00 sec)

Deja un comentario:

XHTML - Tags permitidos:<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>