我在数据库中有一个存储双打的字段,我想要实现的是,如果要保存的数字是负数,那么它应该保存为0。我不知道我是否应该在查询中定义它,或者是否有一种方法可以在db本身中设置它。如果有人能给我一个答案,我将不胜感激;顺便说一句,我使用mysql。
答案 0 :(得分:4)
答案 1 :(得分:0)
简单,使用MySQL的IF()函数,其形式为:
if(expression,value_if_true,value_if_false)
INSERT INTO TABLE (COLUMN) VALUES (IF(my_value < 0, 0, my_value)
答案 2 :(得分:0)
如果您已经拥有表格中的值,那么您可以更新否定值:
update table
set value = 0
where value < 0;
这可能比使用if
或case
更有效(因为if
是ANSI标准,因此优于case
。)
如果要在进入表格时调整值,则需要创建before update
触发器和before insert
触发器来修复值。
但是,您可以通过使用视图获得所需内容:
create view v_table as
select col1, col2, col3, (case when value < 0 then 0 else value end) as value
from table;