2009-04-15 3 views
0

Я обновляю свою таблицу со следующим утверждением:SQLite - значение в диапазоне

UPDATE table SET percentage = percentage + ? WHERE id = ? 

И значение, которое передается в базу данных может быть положительным и отрицательным, а также.

Есть ли способ убедиться, что процентное значение будет находиться в диапазоне 0..100? Желательно выполнить его, используя только SQLite.

Если он меньше 0, я хочу сделать его 0; Если это больше 100, я хочу сделать это 100.

Я могу сделать это через мой код C, но было бы лучше, если бы это было сделано через SQLite.

Благодарим вас заблаговременно.

ответ

1
UPDATE table SET percentage 
= case when percentage < 0 then 0 
    when percentage > 100 then 100 
    else percentage end 
WHERE id = ?; 

Если вы опустите в пункт where, вы будете устанавливать проценты для всей таблицы, которая, по-видимому, что вы хотите.

Однако может быть, что проценты, превышающие 100 или менее нуля, являются законными; Я не знаю вашу проблемную область.

+0

Спасибо, я сделал следующее: «UPDATE table SET percent = case WHEN (в процентах +?) <0, затем 0 WHEN (в процентах +?)> 100, затем 100 ELSE (в процентах +?) END WHERE word_id =?" ; Должен ли я связывать одно и то же значение для всех трех символов «?» ? Или есть способ сделать это один раз? –

+0

Вам не нужно связывать ничего, кроме идентификатора. Используйте заявление, которое я дал вам/as-is /. Или вы можете опустить предложение where и использовать его. – tpdi

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