clamp(X;Y;Z)

Returns Y if X<Y and Z if X>Z. Otherwise, if the "clamped" value X is between Y and Z, clamp(X;Y;Z) returns X. (Available as of version 18.37)

Syntax

clamp(X;Y;Z)

Input

Argument Type Description
X any simple type The value to be "clamped".
Y any simple type The minimum allowed value.
Z any simple type The maximum allowed value.

Return Value

Returns Y if X<Y, Z if X>Z, else X. The return type is the same as the type of X, which may be integer, bigint, or float (in which case Y and Z must be a numeric type).

If the types of Y and/or Z differ from the the type of X, then Y and Z will be coerced to the type of X or a string (in which case Y and Z must also be a string).

clamp(X;Y;Z) is the equivalent of if(X<Y;Y;X>Z;Z;X).

Sample Usage

value min max clamp(value;min;max)
2 1 3 2
2 3 1 1
1.5 1 3 1.5
1.5 2.5 3.1 2.5
1.5 1.2 3.1 1.5
'bat' 'bar' 'baz' 'bat'
'bag' 'bar' 'baz' 'bar'
'foo' 'bar' 'baz' 'baz'
3 'foo' 'bar' 'foo'
3 4 'foo' 4