0

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

例如,像这样:

SELECT TRIM_NUMBER(NUMBER, MIN, MAX);

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

但是如果我这样做:TRIM_NUMBER(999, 1, 100)它应该 return 100,因为它是我设置的 MAX 值。同样的事情也适用于 MIN。

MySQL 中是否包含任何此类功能?

4

5 回答 5

4

试试这个

SELECT GREATEST(LEAST(NUMBER, 100), 1);
于 2013-04-01T23:49:09.953 回答
1

没有内置任何东西,而是您自己编写的代码,如下所示:

select if(num < 1, 1, if (num > 100, 100, num))
于 2013-04-01T23:50:29.260 回答
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
于 2013-04-02T00:00:47.317 回答
0

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

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

于 2013-04-01T23:46:58.350 回答
0

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

select (case when num < 1 then 1
             when num > 100 then 100
             else num
        end) as TrimmedNum
于 2013-04-02T01:07:10.830 回答