sql >> Database >  >> RDS >> Mysql

Mysql-behuizing werkt niet

Wanneer u de kolomnaam achter CASE plaatst , moet u WHEN column = value niet gebruiken , gebruik gewoon WHEN value , omdat het de kolom automatisch vergelijkt met elke waarde in de WHEN clausules.

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 , 

Als je beide doet, test je week_day = (week_day = -1) , week_day = (week_day = 1) , etc. Het werkt op maandag omdat 1 = (1 = 1) is gelijk aan 1 = 1 , wat waar is; maar op dinsdag is het 2 = (2 = 2) , wat gelijk is aan 2 = 1 , wat niet waar is.




  1. ResultSet#getDate() semantiek

  2. SUBSTR() Functie in Oracle

  3. Hoe kan ik de MySQL-gebruikersnaam en -wachtwoord beschermen tegen decompilatie?

  4. Update als de naam bestaat, anders invoegen - in SQL Server