2012-02-11 19 views
10

Me estoy cansando de intentar conectarme a MSSQL, así que me estoy cambiando a mysql. Es un progreso lento. Aquí está mi stumper actual: mssql:caso dentro de un caso de selección en mysql

create function W(m varchar(255)) returns int begin 

declare @e int 
set @e = (select COUNT(N) from P where N = m) 

declare @t int 
set @t = dbo.C(m) 

return case @t 
when 0 then -1 
when 1 then 
    case @e when 0 then -1 else 1 end 
when 2 then 
    case @e when 1 then -1 when 2 then 0 when 3 then 0 when 4 then 1 end 
when 3 then 
    case @e when 1 then -1 when 2 then 1 end 
when 4 then 
    case @e when 1 then -1 when 2 then 0 when 3 then 1 end 
end 
end 

me gustaría cambiar esto a MySQL. ¿Existe una forma de mysql válida para:

select select case n when 0 then 1 when 1 then 2 end into var 

? ¿Qué hay de

set var = select case n when [...] end 

?

Respuesta

29

esto le guiará en el uso de Inline IF and CASE statements in MySQL

fragmento:

SELECT CASE num_heads 
      WHEN 0 THEN 'Zombie' 
      WHEN 1 THEN 'Human' 
      ELSE 'Alien' 
     END AS race 
FROM user 

o

mysql> SET @val := CASE num_heads 
       WHEN 0 THEN 'Zombie' 
       WHEN 1 THEN 'Human' 
       ELSE 'Alien' 
      END AS race; 

mysql> SELECT @val; 
+0

Oh, veo el AS. ¡Muchas gracias! –