seleccione *,if(sva=1,"male","female") como ssva de taname donde sva<>""
12.2.
CASO valor CUANDO [valor-comparación] ENTONCES resultado [CUANDO [valor-comparación] ENTONCES resultado...] [OTRO resultado] FINAL CASO CUANDO [condición] ENTONCES resultado [CUANDO [condición] ENTONCES resultado...] [OTRO resultado] FIN
En el resultado devuelto del primer escenario, valor = valor de comparación. El resultado devuelto del segundo escenario es el resultado verdadero del primer escenario. Si no hay ningún valor de resultado coincidente, el resultado devuelto es el resultado después de ELSE. Si no hay ninguna parte ELSE, el valor de retorno es NULL.
mysql> SELECCIONE CASO 1 CUANDO 1 ENTONCES 'uno'
-> CUANDO 2 ENTONCES 'dos' ELSE 'más' FINAL;
-> 'uno'
mysql> SELECCIONE CASO CUANDO 1>0 ENTONCES 'verdadero' ELSE 'falso' FINAL
; 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
-> NULL
El tipo de valor de retorno predeterminado de una expresión CASE es cualquier tipo de colección compatible del valor de retorno, pero La situación específica depende del contexto. Si se usa en un contexto de cadena, devuelve la cadena resultante. Si se usa en un contexto numérico, el resultado se devuelve como un valor decimal, real o entero.
SI(expr1,expr2,expr3)
Si expr1 es VERDADERO (expr1 <> 0 y expr1 <> NULL), el valor de retorno de IF() es expr2; de lo contrario, el valor de retorno es expr3; El valor de retorno de IF() es un valor numérico o un valor de cadena, según el contexto.
mysql> SELECT IF(1>2,2,3);
-
> 3
mysql>SELECT
IF(1<2,'sí ','no');
,'test1'),'no','yes');
-> 'no'Si
solo uno de expr2 o expr3 es explícitamente NULL, el tipo de resultado de la función IF() es el tipo de resultado de la expresión no NULL. .
expr1 se evalúa como un valor entero, lo que significa que si está validando un valor de punto flotante o un valor de cadena, debe usar operaciones de comparación para verificar.
mysql> SELECT IF(0.1,1,0);
-> 0
mysql> SELECT IF(0.1<>0,1,0);
-> 1
En el primer ejemplo mostrado, el valor de retorno de IF(0.1) es 0 porque 0,1 se convierte a un valor entero, lo que provoca una prueba de IF(0). Puede que esta no sea la situación que desea. En el segundo ejemplo, la comparación verifica el valor de punto flotante original para ver si es distinto de cero. Utilice números enteros para resultados de comparación.
El tipo de retorno predeterminado de IF() (esto es importante cuando se almacena en una tabla temporal) se calcula de la siguiente manera:
expresión
valor de retorno
El valor de retorno de expr2 o expr3 es una cadena.
cadena
El valor de retorno de expr2 o expr3 es un valor de punto flotante.
punto flotante
El valor de retorno de expr2 o expr3 es un número entero.
entero
Si expr2 y expr3 son cadenas y cualquiera de las cadenas distingue entre mayúsculas y minúsculas, el resultado devuelto distingue entre mayúsculas y minúsculas.
http://blog.knowsky.com/
IFNULL(expr1,expr2)
Si expr1 no es NULL, el valor de retorno de IFNULL() es expr1; de lo contrario, el valor de retorno es expr2. El valor de retorno de IFNULL() es un número o una cadena, según el contexto en el que se utiliza.
mysql> SELECCIONAR IFNULL(1,0);
-> 1
mysql
> SELECCIONAR IFNULL(NULL,10);
-> 10
mysql> SELECCIONAR IFNULL(
1/0,10)
;'yes');
-> 'yes'
El valor de resultado predeterminado de IFNULL(expr1,expr2) es la más "general" de las dos expresiones, en el orden de STRING, REAL o INTEGER. Supongamos el caso de una tabla basada en expresiones, o MySQL debe almacenar el valor de retorno de IFNULL() en una tabla temporal en la memoria:
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test
en este ejemplo, test La columna; El tipo es CHAR(4).
NULLIF(expr1,expr2)
Si se cumple expr1 = expr2, el valor de retorno es NULL; de lo contrario, el valor de retorno es expr1. Esto es lo mismo que CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2
-> 1
)Tenga en cuenta que si los parámetros no son iguales, el valor obtenido por MySQL dos veces es expr1.