如何从 Postgresql 中的最大值 3 的最后两位数中获取最大值?

How to get Max value from last two digits out of max 3 in Postgresql?

我想trim一些数字到两位数并从中得到最大值。

我的 table 列称为“千”(int4),其值如下:

我希望收到值 12,因为在 trim 将数字调到最大值之后。两位数字,912 应转换为 12,高于 11,但我使用查询收到 7:

SELECT MAX(RIGHT("thousands"::varchar, 2)) 
FROM "numbers"

我猜 RIGHT([string], [number of digits from right to left]) 当值的位数少于请求的位数时会搞砸,但我不知道如何实现所需的解决方案。有人可以帮忙吗?

demo:db<>fiddle

RIGHT() returns 一个 text 输出。因此,MAX() 应用于此输出并使用字母顺序。在这个顺序中,712 之后,因为 7 > 11 作为 12 的第一个字符)。为避免这种情况,您可以在使用 MAX():

之前将 RIGHT() 结果转换为类型 int
SELECT
    MAX(RIGHT(thousands::text, 2)::int)
FROM t

更好更快的方法是使用数字运算而不是双重转换您的值。因此,可以使用模运算 %:

计算数字的最后一位
SELECT
    MAX(thousands % 100)
FROM t