首页 > 解决方案 > 如何从 Postgresql 中的最大值 3 中的最后两位数中获取最大值?

问题描述

我想将一些数字修剪为两位数并从中获取最大值。

我的表列称为“千”(int4),具有以下值:

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

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

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

标签: postgresqlmaxtrimdigits

解决方案


演示:db<>小提琴

RIGHT()返回一个text输出。因此,MAX()应用于此输出并使用字母顺序。按此顺序,712因为7 > 11作为 的第一个字符12)之后。为避免这种情况,您可以在使用之前将RIGHT()结果转换为类型:intMAX()

SELECT
    MAX(RIGHT(thousands::text, 2)::int)
FROM t

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

SELECT
    MAX(thousands % 100)
FROM t

推荐阅读