这有效:
UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE
WHEN a.date_completed = '04-JUL-2012' THEN '06-JUL-2012'
END
WHERE a.emplid = 18
但这不会(下图)。我得到的错误是数据类型不匹配,当然这是有道理的,因为一个是DATE数据类型而另一个是NUMBER。
UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE a.date_completed
WHEN '04-JUL-2012' THEN '06-JUL-2012'
END
WHERE a.emplid = 21
我的问题:有没有一种解决方法让我的第二种方式工作,我将列名'a.date_completed'放在SQL的CASE行中而不是我如何让它以第一种方式工作?我是否完全关闭了第二个SQL的语法?
答案 0 :(得分:2)
您可以改为使用日期文字:
UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE a.date_completed
WHEN DATE '2012-07-04' THEN DATE '2012-07-06'
END
WHERE a.emplid = 21
答案 1 :(得分:1)
在case语句中将date_completed
转换为String。
试试这个:
UPDATE KEYBOARD_LEARNING a
SET a.date_completed =
CASE TO_CHAR(a.date_completed, 'DD-MON-RRRR')
WHEN '04-JUL-2012' THEN TO_DATE('06-JUL-2012','DD-MON-RRRR')
END
WHERE a.emplid = 21