selecione *,if(sva=1,"masculino","feminino") como ssva de taname onde sva<>""
12.2.
Valor CASE WHEN [valor de comparação] THEN resultado [WHEN [valor de comparação] THEN resultado ...] [ELSE resultado] END CASE WHEN [condição] THEN resultado [WHEN [condição] THEN resultado ...] [ELSE resultado] FIM
No resultado de retorno do primeiro cenário, valor=valor de comparação. O resultado de retorno do segundo cenário é o verdadeiro resultado do primeiro cenário. Se não houver valor de resultado correspondente, o resultado retornado será o resultado após ELSE. Se não houver parte ELSE, o valor de retorno será NULL.
mysql> SELECT CASE 1 WHEN 1 THEN 'um'
-> WHEN 2 THEN 'dois' ELSE 'mais' END
-> 'one'
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END
; 'true'
mysql> SELECT CASE BINARY 'B'
-> WHEN 'a' THEN 1 WHEN 'b' THEN 2 END
-> NULL
O tipo de valor de retorno padrão de uma expressão CASE é qualquer tipo de coleção compatível do valor de retorno, mas A situação específica depende do contexto. Se usado em um contexto de string, retorna a string resultante. Se usado em um contexto numérico, o resultado será retornado como um valor decimal, real ou inteiro.
SE(expr1,expr2,expr3)
Se expr1 for TRUE (expr1 <> 0 e expr1 <> NULL), o valor de retorno de IF() será expr2; caso contrário, o valor de retorno será expr3. O valor de retorno de IF() é um valor numérico ou um valor de string, dependendo do contexto.
mysql> SELECT IF(1>2,2,3);
-
> 3
mysql
> SELECT IF(1<2,'sim','não');
,'test1'),'no','yes');
-> 'no'Se
apenas um de expr2 ou expr3 for explicitamente NULL, o tipo de resultado da função IF() será o tipo de resultado da expressão não NULL. .
expr1 é avaliado como um valor inteiro, o que significa que se você estiver validando um valor de ponto flutuante ou um valor de string, deverá usar operações de comparação para verificar.
mysql> SELECT IF(0.1,1,0);
->
0
mysql> SELECT IF(0.1<>0,1,0)
; 0,1 é convertido em um valor inteiro, causando um teste de IF(0). Esta pode não ser a situação que você deseja. No segundo exemplo, a comparação verifica o valor original do ponto flutuante para ver se é diferente de zero. Use números inteiros para resultados de comparação.
O tipo de retorno padrão de IF() (isto é importante quando é armazenado em uma tabela temporária) é calculado da seguinte forma:
expressão
valor de retorno
O valor de retorno de expr2 ou expr3 é uma string.
corda
O valor de retorno de expr2 ou expr3 é um valor de ponto flutuante.
ponto flutuante
O valor de retorno de expr2 ou expr3 é um número inteiro.
inteiro
Se expr2 e expr3 forem strings e qualquer uma das strings diferenciar maiúsculas de minúsculas, o resultado retornado fará distinção entre maiúsculas e minúsculas.
http://blog.knowsky.com/
IFNULL(expr1,expr2)
Se expr1 não for NULL, o valor de retorno de IFNULL() será expr1; caso contrário, o valor de retorno será expr2. O valor de retorno de IFNULL() é um número ou uma string, dependendo do contexto em que é usado.
mysql> SELECT IFNULL(1,0);
-> 1
mysql
>
SELECT IFNULL(
NULL,10)
; 'yes');
-> 'yes'
O valor padrão do resultado de IFNULL(expr1,expr2) é a mais "geral" das duas expressões, na ordem de STRING, REAL ou INTEGER. Suponha o caso de uma tabela baseada em expressão, ou o MySQL deve armazenar o valor de retorno de IFNULL() em uma tabela temporária na memória:
CREATE TABLE tmp SELECT IFNULL(1,'test') AS test
neste exemplo, test A coluna; tipo é CHAR(4).
NULLIF(expr1,expr2)
Se expr1 = expr2 for válido, o valor de retorno será NULL, caso contrário, o valor de retorno será expr1. É o mesmo que CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END.
mysql> SELECT NULLIF(1,1);
-> NULL
mysql> SELECT NULLIF(1,2);
Observe
que se os parâmetros não forem iguais, o valor obtido pelo MySQL duas vezes é expr1;