我不知道用于此的术语或确切的单词,但我在MySQL中寻找一个可以将数字修剪为X和Y之间的函数。
例如,像这样:
SELECT TRIM_NUMBER(NUMBER, MIN, MAX);
如果我这样做:TRIM_NUMBER(50, 1, 100)
它应该没问题,并返回50
。
但如果我执行类似:TRIM_NUMBER(999, 1, 100)
的操作,它应该返回100
,因为它是我设置的MAX值。同样适用于MIN。
MySQL中是否包含此类功能?
答案 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