首页 > 解决方案 > 如何根据特殊字符内的自定义值对数据库结果进行排序?

问题描述

我有一个返回的数据集 1001(10), 1001(09), 1002(08)。有没有办法可以将此数据集排序为以下顺序,您可以在其中检查括号内的值并对它们进行排序:

1002(08)

1001(09)

1001(10)

我只知道排序是 ORDER BY DESC 和 ASC 的方式,但是,这是一种奇怪的排序方式,这甚至可能吗?

标签: sqlpostgresql

解决方案


如果你真的不想把它分成两个字段,你可以这样做:

SELECT t.*
FROM my_table t
ORDER BY trim(ltrim(t.my_column, '0123456789'), '()')::int

假设您的字符串始终以整数开头,然后在括号中有一个整数。

但是你真的应该考虑改变你的数据模型。


推荐阅读