postgres:选择max返回9而不是10

时间:2014-02-13 07:08:04

标签: postgresql

这是我的剧本:

SELECT MAX(distinct TRIM(value, 'SAMPLE_VALUES_'))
FROM sample
WHERE id = 79;

我的数据有点像这样:

id | value
-------------------
79 | SAMPLE_VALUES_6
79 | SAMPLE_VALUES_7
79 | SAMPLE_VALUES_7
79 | SAMPLE_VALUES_8
79 | SAMPLE_VALUES_8
79 | SAMPLE_VALUES_8
79 | SAMPLE_VALUES_9
79 | SAMPLE_VALUES_9
79 | SAMPLE_VALUES_10
79 | SAMPLE_VALUES_10
79 | SAMPLE_VALUES_10

但它总是返回9。

我的脚本有问题吗?谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

尝试将修剪结果转换为整数

SELECT MAX(distinct TRIM(value, 'SAMPLE_VALUES_')::int)
FROM sample
WHERE id = 79;

您当前的查询是调用MAX(文本)而不是MAX(整数)。比较文本字符串的规则与比较数字不同 - 字符串逐字符比较,第一个字符“9”是>第一个字符'10'。

答案 1 :(得分:0)

投入整数。

SELECT MAX(distinct cast(TRIM(value, 'SAMPLE_VALUES_') as integer))
FROM sample
WHERE id = 79
相关问题