我想做
update my_table set bool_column = id in (1,5,8);
因此3行将成为真,其他行则为假。但是oracle说:SQL command not properly ended
我怎么能实现这个目标呢?
答案 0 :(得分:2)
您可以使用case
声明:
update my_table
set bool_column =
case
when id in (1,5,8)
then 1
else 0
end
where ...
请注意,Oracle没有布尔数据类型,因此您可能正在使用number
或char
。
答案 1 :(得分:2)
更新语句需要很少的参数:
我列出了所有这些内容,因为不太清楚bool_column的类型是什么,以及是否要更新所有行或只是3。
oracle中没有布尔列,因此无法将表达式id in (1,5,8)
转换为任何已知的数据类型。 Oracle不期望bool_column右侧的布尔表达式。
你的bool_column数据类型是number或varchar / char。所以,而不是真/假,你有1/0,' Y' N' N'或类似的东西。 我认为你有' /' N' N' N' 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)
但是对于这种方法,你需要确保以空/假bool_column开头。