2014-11-13 3 views
-1
Update myTable SET field = 1 (if field = 0 or if field is null) where myid = 12345; 
Update myTable SET field = 0 (if field = 1) where myid = 12345; 

Каков наилучший способ преобразования этого псевдокода в правильный SQL для Oracle и MySQL?Toggle boolean в MySQL/Oracle Database

ответ

1

Из-за отсутствия реального булевы в обоих СУБД вам необходимо тематическое заявление:

update myTable 
    set the_column = case when the_column = 1 then 0 else 1 end 
where myId = 12345; 

Это предполагает, что столбец никогда не имеет различные значения, чем 0 и 1

2

Вы могли бы просто использовать по модулю, как это:

UPDATE myTable SET field = (field + 1) % 2 WHERE myId = 12345; 
+3

это должно быть по модулю 2. Модульное 1 всегда приводит к 0 в вашем примере – DaveyBoy

+0

Вы полностью правильно –

Смежные вопросы