Mysql:修剪数字介于X和Y MIN / MAX之间

时间:2013-04-01 23:41:42

标签: mysql

我不知道用于此的术语或确切的单词,但我在MySQL中寻找一个可以将数字修剪为X和Y之间的函数。

例如,像这样:

SELECT TRIM_NUMBER(NUMBER, MIN, MAX);

如果我这样做:TRIM_NUMBER(50, 1, 100)它应该没问题,并返回50

但如果我执行类似:TRIM_NUMBER(999, 1, 100)的操作,它应该返回100,因为它是我设置的MAX值。同样适用于MIN。

MySQL中是否包含此类功能?

5 个答案:

答案 0 :(得分:4)

试试这个

SELECT GREATEST(LEAST(NUMBER, 100), 1);

答案 1 :(得分:1)

没有任何内置内容,但您自己的代码是这样的:

select if(num < 1, 1, if (num > 100, 100, num))

答案 2 :(得分:1)

如果你想要一个功能的“过度杀伤”,这里有一个建议:

create function trimNumber(x double, floorValue double, ceilValue double) returns double
begin
   declare ans double;
   if x >= floorValue and x <= ceilValue then
       set ans = x;
   else
       if x < floorValue then
           set ans = floorValue;
       else
           set ans = ceilValue;
       end if;
   end if;
   return ans;
end

答案 3 :(得分:0)

我认为你正在寻找类似的东西(来自MySQL参考手册):

http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html#operator_between

答案 4 :(得分:0)

只需添加它,因为它是表达此标准的ANSI标准方式:

select (case when num < 1 then 1
             when num > 100 then 100
             else num
        end) as TrimmedNum