2014-01-18 5 views
1

У меня есть поле в db, в котором хранятся двойники, чего я хочу достичь, так это то, что если число, которое будет сохранено, будет отрицательным, тогда оно должно сохранить 0 вместо. Я не знаю, могу ли я определить это в запросе, или если есть способ установить его так, как в самом db. Буду признателен, если кто-нибудь может дать мне ответ; кстати, используя mysql.Когда число отрицательное, сохраните 0 (mysql)

ответ

4

Вы можете использовать MySQL IF синтаксис:

UPDATE table SET column=IF(value<0, 0, value) WHERE ... 

Больше на IF синтаксиса here.

0

Простой, используйте IF в MySQL() функцию, которая принимает вид:

(выражение, значение_если_истина, значение_если_ложь)

INSERT INTO TABLE (COLUMN) VALUES (IF(my_value < 0, 0, my_value) 
0

Если у вас уже есть значения в таблице, то вы можете обновить отрицательные:

update table 
    set value = 0 
    where value < 0; 

Это потенциально гораздо более эффективным, чем использование if или case (что предпочтительнее if, потому что case - стандарт ANSI).

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

Однако, вы могли бы получить то, что вы хотите, просто используя вид:

create view v_table as 
    select col1, col2, col3, (case when value < 0 then 0 else value end) as value 
    from table; 
+0

Спасибо за вашу помощь, ребята, но я нашел еще более простое решение, я использую функцию MySQL величайшая, Пример: = >>> INSERT в tbl_betrate GREATEST ($ val1 - '$ reduce', 0) ... это вернет 0, если число отрицательно ... Я надеюсь, что он служит кому-то другому, который находится в той же трудности. .. и если мой подход недостаточно хорош, будьте свободны исправить меня ... это работает, но может и не быть лучшим ... – emc

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