update my_table set bool_column = id in (1,5,8);
所以这3行会获得真正的和别人虚伪。但甲骨文说:SQL command not properly ended
我该怎么做到这一点?
update my_table set bool_column = id in (1,5,8);
所以这3行会获得真正的和别人虚伪。但甲骨文说:SQL command not properly ended
我该怎么做到这一点?
Update语句需要几个参数:你会被修改(在这种情况下MY_TABLE)
我列出了所有的人,因为它是不太清楚是什么bool_column类型以及是否要更新所有行或仅3
有一个在Oracle中没有布尔列,所以表达id in (1,5,8)
不能转换为任何已知的数据类型。 Oracle不期望bool_column右边的布尔表达式。
您的bool_column数据类型是number或varchar/char。所以,而不是真/假,你有1/0,'Y'/'N'或类似的东西。 我会假设你有'Y'/'N'。
然后你的声明可能是这样的:
update my_table set
bool_column = case when id in (1,5,8) then 'Y' else 'N' end
另一种选择是与1,5,8只设置行,让他们空休息(假设假):
update my_table set
bool_column = 'Y'
where id in (1,5,8)
但是对于这个问题,你需要确保以empty/false bool_column开头。
你可以使用一个case
声明:
update my_table
set bool_column =
case
when id in (1,5,8)
then 1
else 0
end
where ...
注意,Oracle不具有布尔数据类型,所以也许你正在使用number
或char
。
colunm的数据类型是什么? Oracle没有布尔值。 – 2014-09-04 14:36:56
'where'在哪里? :) – 2014-09-04 14:37:16
@Patrick number(1,0); @david为什么我需要'where'?我想更新所有行 – piotrek 2014-09-04 14:38:14