Mysql
 sql >> Base de données >  >> RDS >> Mysql

Le cas mysql ne fonctionne pas

Lorsque vous mettez le nom de la colonne après CASE , vous ne devez pas utiliser WHEN column = value , utilisez simplement WHEN value , car il compare automatiquement la colonne à chaque valeur du WHEN clauses.

CASE type
    WHEN 1 THEN 'General day'
    ELSE 'Special date'
END AS type_changed,
CASE week_day 
   WHEN -1 THEN 'notset' 
   WHEN 1 THEN 'monday' 
   WHEN 2 THEN 'tuesday' 
   WHEN 3 THEN 'wednesday' 
   WHEN 4 THEN 'thursday' 
   WHEN 5 THEN 'friday' 
   WHEN 6 THEN 'saturday' 
   WHEN 7 THEN 'sunday' 
END AS week_day_mod , 

Lorsque vous faites les deux, vous testez week_day = (week_day = -1) , week_day = (week_day = 1) , etc. Cela fonctionne le lundi car 1 = (1 = 1) est équivalent à 1 = 1 , ce qui est vrai; mais mardi, c'est 2 = (2 = 2) , ce qui équivaut à 2 = 1 , ce qui est faux.