Sentencia CASE en consulta SQLite
¿Por qué esta consulta no funciona? : (Traté de reemplazar anidado SI declaración"...SET lkey= IF(lkey > = 11, lkey-5, IF (lkey > 5, lkey + 2, lkey)) "
UPDATE pages
SET lkey = CASE lkey WHEN lkey >= 11 THEN
lkey - 5
ELSE
CASE lkey WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
END,
rkey = CASE lkey WHEN lkey >= 11 THEN
rkey - 5
ELSE
CASE rkey WHEN rkey < 11 THEN
rkey + 2
ELSE
rkey
END
END
WHERE rkey > 5 AND
lkey < 12;
40
2 answers
La sintaxis es incorrecta en esta cláusula (y otras similares)
CASE lkey WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
Es
CASE WHEN [condition] THEN [expression] ELSE [expression] END
O
CASE [expression] WHEN [value] THEN [expression] ELSE [expression] END
Así que en su caso se leería:
CASE WHEN lkey > 5 THEN
lkey + 2
ELSE
lkey
END
Echa un vistazo a la documentación (La expresión CASE):
75
Author: Lukas Eder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-11 12:27:27
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-02-11 12:27:27
Además, no tiene que usar casos anidados. Puede usar varias líneas WHEN-THEN y la línea ELSE también es opcional aunque la recomiendo
CASE
WHEN [condition.1] THEN [expression.1]
WHEN [condition.2] THEN [expression.2]
...
WHEN [condition.n] THEN [expression.n]
ELSE [expression]
END
28
Author: Hrusilov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-08 15:18:09
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-08 15:18:09