Postgresql - 将数字截断到范围

Postgresql - truncate numbers to range

提问人:Robert 提问时间:8/19/2023 更新时间:8/19/2023 访问量:59

问:

是否有内置函数可以截断一种类型的值以适合另一种类型的范围?例如,将 a 转换为 .如果大于可以容纳的大小,则此操作可能会失败。在这种情况下,我希望将数字截断为最大值。INTEGERSMALLINTINTEGERSMALLINTSMALLINT

PostgreSQL 类型 转换 截断

评论

0赞 Adrian Klaver 8/19/2023
为什么要这样做?
0赞 Robert 8/21/2023
我的动机并没有改变我问题的性质@AdrianKlaver

答:

1赞 Adrian Maxwell 8/19/2023 #1

据我所知,没有内置函数,您需要使用大小写表达式来处理最小值和最大值,例如:

SELECT CASE
    WHEN your_integer_column > 32767 THEN 32767
    WHEN your_integer_column < -32768 THEN -32768
    ELSE your_integer_column
END::smallint AS truncated_smallint
FROM your_table;