Condicional no mysql

5 respostas
S

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!

5 Respostas

Marlon_Meneses

no sqlServer tem o isnull
no seu caso ficaria isnull(campo,’-’) no select

mario.fts
SELECT data_entrada, 
            defeito, 
            CASE data_saida
                    WHEN NULL THEN '-' 
                    ELSE data_saida END
FROM tabela

acho que é isso

S

mario.fts:
SELECT data_entrada, defeito, CASE data_saida WHEN NULL THEN '-' ELSE data_saida END FROM tabela

acho 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!

mario.fts

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

pmlm

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

Criado 11 de novembro de 2009
Ultima resposta 12 de nov. de 2009
Respostas 5
Participantes 4