21 lines
600 B
MySQL
21 lines
600 B
MySQL
|
|
/*
|
||
|
|
This macro caps a given value between a specified bottom and top limit,
|
||
|
|
returning `NULL` if the input value is `NULL`.
|
||
|
|
|
||
|
|
It uses the `LEAST` and `GREATEST` SQL functions to enforce the caps while
|
||
|
|
preserving the `NULL` values in the input.
|
||
|
|
|
||
|
|
Parameters:
|
||
|
|
- `value`: The value to be capped.
|
||
|
|
- `cap_bottom`: The minimum limit for the value.
|
||
|
|
- `cap_top`: The maximum limit for the value.
|
||
|
|
|
||
|
|
*/
|
||
|
|
{% macro return_capped_value(value, cap_bottom, cap_top) %}
|
||
|
|
CASE
|
||
|
|
WHEN {{ value }} IS NULL THEN NULL
|
||
|
|
ELSE LEAST({{ cap_top }}, GREATEST({{ cap_bottom }}, {{ value }}))
|
||
|
|
END
|
||
|
|
{% endmacro %}
|
||
|
|
|