[SQL] Инвертирование значений

uncle17

А как написать что-то вроде
update table set field=!field
?
Поймет? Если field - булевский?
А если он инт, но всего у него пока значений - 0 и 1

sinet

update table set field=1-field

uncle17


а ведь точно
З.Ы. Спросите - почему не булевский? Потому что надо не только на 1 и 0 проверять, но и плюсовать это значение в счетчике
З.З.Ы.
Кстати, отсюда вопрос...
$a=1
чему будут равны
$a += true
$a = $a+true
$a = true+$a
?
Есть какое-то общее правило или зависит от языка и (или) его версии?

pitrik2

update table set field=1-field
еще бы добавить работу с наллами
и было бы вообще супер

sinet

Под мускуль допиливайте без меня.

sinet

Вдруг кому пригодится, ещё вариант (Oracle):
update table set parent_id = decode(parent_id,508,517,517,508) where parent_id in (508,517);

pitrik2

ну начинается
еще вариант с case, с coalesce

Geddi-S

update table set parent_id = decode(parent_id,508,517,517,508) where parent_id in (508,517);
Как-то многабукв :) Вот на четыре буквы короче:
update table set parent_id = decode(parent_id,508,517,508) where parent_id in (508,517);

sinet

Точно, зато менее понятно. :)

0000

update table set parent_id = decode(parent_id,508,517,517,508) where parent_id in (508,517);
Еще короче

update table set parent_id = decode(parent_id, 508, 517, 517, 508, parent_id);

И работать будет дольше :D
Оставить комментарий
Имя или ник:
Комментарий: