2012-02-11 21 views
10

私はMSSQLに接続しようとするのがうんざりしているので、私はmysqlに切り替えます。 遅い進歩です。ここに私の現在のスタンパです: MSSQL:mysqlのselect case内のケース

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 

私は、MySQLにこれを切り替えるしたいと思います。有効なmysqlの方法はありますか?

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

? 約

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

答えて

29

これはInline IF and CASE statements in MySQL

スニペット使用にご案内します。

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

または

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

mysql> SELECT @val; 
+0

ああ、私はASを参照してください。本当にありがとう! –