Postgresql - 将数字截断到范围

问题描述 投票:0回答:1

是否有内置函数可以截断一种类型的值以适应另一种类型的范围?例如,将

INTEGER
转换为
SMALLINT
。如果
INTEGER
大于
SMALLINT
所能容纳的大小,这可能会失败。在这种情况下,我希望将数字截断为尽可能大的
SMALLINT

postgresql types casting truncate
1个回答
0
投票

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

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;
© www.soinside.com 2019 - 2024. All rights reserved.