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