我有一张桌子如下所示:
ID | text_field
----| ----------
1 | ABC-432
2 | ABC-1
3 | ABC-10
4 | ABC-5我想根据text_field数字部分得到前两名结果的列表
根据上述数据,查询输出如下:
ID | text_field
----| ----------
1 | ABC-432
3 | ABC-10因为432和10是这个数据集中两个最高的数字。
发布于 2019-02-24 00:05:10
您可以利用substring()的灵活性,它支持正则表达式。
SELECT *
FROM t
ORDER BY substring(val, '\d+$')::integer DESC
LIMIT 2Regexp '\d+$'的意思是:字符串末尾的所有数字。您需要将其转换为整数,以便执行数字排序。
| val |
| ------- |
| ABC-432 |
| ABC-10 |https://stackoverflow.com/questions/54847403
复制相似问题