Pessoal, é possível fazer um query que caso uma determinada coluna retorne um certo valor este seja substituido por outro?
Por exemplo, farei um query que retorna data de saída, data de entrada e defeito de um determinado equipamento. Quero que caso a data de saída seja igual a null ele retorne o caracter " - ". É possivel?
Obrigado!
Condicional no mysql
5 Respostas
no sqlServer tem o isnull
no seu caso ficaria isnull(campo,’-’) no select
SELECT data_entrada,
defeito,
CASE data_saida
WHEN NULL THEN '-'
ELSE data_saida END
FROM tabela
acho que é isso
SELECT data_entrada, defeito, CASE data_saida WHEN NULL THEN '-' ELSE data_saida END FROM tabelaacho que é isso
Então mario.fts, eu vi um exemplo assim na documentação do mysql, mas não funciona ele retorna tudo NULL. Esse é um select que fiz para testar mas não funcionou.
select serie.serie as serie, modelo.nome as modelo, radio.nome as radio, smart.nome as smart,
CASE soi.nome
WHEN NULL THEN '-'
ELSE soi.nome END
from serie join modelo on modelo.codigo = serie.modelo join radio on radio.codigo = serie.radio
join smart on smart.codigo = serie.smart join soi on soi.codigo = serie.soi
where serie.serie = 373
Obrigado!
infelizmente não tenho nenhum mysql aqui pra testar. mas, vamos lá…
em outros bancos de dados vc tem que usar is null no lugar de null sozinho. ve ai se no mysql funciona assim tbm. mudei um pouco a sua query, testa ae e manda o resultado
select serie.serie as serie, modelo.nome as modelo, radio.nome as radio, smart.nome as smart,
CASE
WHEN soi.nome IS NULL THEN '-'
ELSE soi.nome END as nome
from serie join modelo on modelo.codigo = serie.modelo join radio on radio.codigo = serie.radio
join smart on smart.codigo = serie.smart join soi on soi.codigo = serie.soi
where serie.serie = 373
O mysql tem uma função IFNULL
select serie.serie as serie, modelo.nome as modelo, radio.nome as radio, smart.nome as smart,
IFNULL( soi.nome , '-') AS soi
from serie join modelo on modelo.codigo = serie.modelo join radio on radio.codigo = serie.radio
join smart on smart.codigo = serie.smart join soi on soi.codigo = serie.soi
where serie.serie = 373