PostgreSQL ORDER BY子句,用于文本列的数字部分

时间:2015-09-16 07:13:54

标签: sql postgresql sql-order-by

我有一个表,其中列为主键,值为

G1,G2,G3,...Gn

我想订购数据,但问题是当我使用ORDER BY子句时,它将数据显示为:

G1,G10,G11... G2,G20,G21, ... G3,G30,G31....

我使用的查询是:

select * from myTable order by id asc;

1 个答案:

答案 0 :(得分:1)

您的id列显然属于某种文本数据类型,因此排序按字母顺序排列,而不是按数字排序。为了让它发挥作用,剥去G' G'订购时从id列开始:

SELECT * FROM mytable
ORDER BY right(id, -1)::integer;