clamp
Stellt mathematische Clamp-Funktionen für numerische Typen in DuckDB bereit, darunter allgemeines Clamping, Saturate und weitere. Stellt sicher, dass Werte in einem angegebenen Bereich bleiben, und behandelt NULLs und NaNs korrekt.
Maintainer: oglego
Installation und Laden
INSTALL clamp FROM community;LOAD clamp;Beispiel
-- General clamp between min and maxSELECT clamp(5, 0, 10); -- Returns 5SELECT clamp(-5, 0, 10); -- Returns 0SELECT clamp(15, 0, 10); -- Returns 10
-- NULL handlingSELECT clamp(NULL, 0, 10); -- Returns NULLSELECT clamp(5, NULL, 10); -- Returns NULLSELECT clamp(5, 0, NULL); -- Returns NULL
-- Convenience clip (alias for clamp)SELECT clip(15, 10, 20); -- Returns 15SELECT clip(5, 10, 20); -- Returns 10SELECT clip(25, 10, 20); -- Returns 20
-- Saturate (equivalent to clamp(x, 0.0, 1.0))SELECT saturate(0.5); -- Returns 0.5SELECT saturate(-0.5); -- Returns 0.0SELECT saturate(1.5); -- Returns 1.0
-- Convenience clamp01 (alias for saturate)SELECT clamp01(0.7); -- Returns 0.7SELECT clamp01(-1.0); -- Returns 0.0SELECT clamp01(2.0); -- Returns 1.0
-- Handling NaN and NULLSELECT clamp(CAST('NaN' AS DOUBLE), 0, 10); -- Returns NaNSELECT saturate(NULL); -- Returns NULL
-- Wrap a value into a range [min, max) using modular arithmeticSELECT wrap(11, 0, 10); -- Returns 1SELECT wrap(25, 10, 20); -- Returns 15SELECT wrap(5, 10, 20); -- Returns 15
-- Pingpong a value between min and maxSELECT pingpong(11, 0, 10); -- Returns 9SELECT pingpong(12, 10, 20); -- Returns 12SELECT pingpong(28, 10, 20); -- Returns 12
-- Fract (returns the fractional part of a number)SELECT fract(1.75); -- Returns 0.75SELECT fract(-0.1); -- Returns 0.9SELECT fract(10); -- Returns 0.0Über clamp
Die Clamp-Erweiterung stellt Funktionen zur numerischen Begrenzung bereit:
-
clamp(value, min, max): Beschränkt einen numerischen Wert auf das Intervall zwischen
minundmax.- Unterstützt NaN-Propagation (IEEE-754-Standard)
- Wirft eine Exception, wenn
min > max - Gibt NULL zurück, wenn ein Argument NULL ist
-
clip(value, min, max): Alias für
clamp(value, min, max). -
saturate(value): Komfortfunktion, die Werte auf das Intervall 0.0 bis 1.0 begrenzt.
-
clamp01(value): Alias für
saturate(value). -
wrap(value, min, max): Wickelt einen Wert x mit modularer Arithmetik in den Bereich [min, max).
-
pingpong(value, min, max): Gibt einen Wert zurück, der zwischen min und max hin- und herspringt.
-
fract(value): Gibt den Nachkommaanteil einer Zahl zurück.
Die Erweiterung behandelt Randfälle zuverlässig, darunter:
- NaN-Werte
- NULLs
- Gleitkommazahlen
- große Ganzzahlen
Hinzugefügte Funktionen
| function_name | function_type | description | comment | examples |
|---|---|---|---|---|
| clamp | scalar | NULL | NULL | |
| clamp01 | scalar | NULL | NULL | |
| clip | scalar | NULL | NULL | |
| fract | scalar | NULL | NULL | |
| pingpong | scalar | NULL | NULL | |
| saturate | scalar | NULL | NULL | |
| wrap | scalar | NULL | NULL |
Überladene Funktionen
Diese Erweiterung fügt keine Funktionsüberladungen hinzu.
Hinzugefügte Typen
Diese Erweiterung fügt keine Typen hinzu.
Hinzugefügte Einstellungen
Diese Erweiterung fügt keine Einstellungen hinzu.