2
我有一个具有一列作为主键的表,值是的PostgreSQL ORDER BY上文本列的数字部分子句
G1,G2,G3,...Gn
我希望订购数据,但问题是当我使用ORDER BY
条款则显示数据:
G1,G10,G11... G2,G20,G21, ... G3,G30,G31....
我使用的查询是:
select * from myTable order by id asc;
我有一个具有一列作为主键的表,值是的PostgreSQL ORDER BY上文本列的数字部分子句
G1,G2,G3,...Gn
我希望订购数据,但问题是当我使用ORDER BY
条款则显示数据:
G1,G10,G11... G2,G20,G21, ... G3,G30,G31....
我使用的查询是:
select * from myTable order by id asc;
你id
列显然是一些文本数据类型,所以排序是按字母顺序排列的,而不是数字。为了得到它的工作,从id
列剥离“G”订货时:
SELECT * FROM mytable
ORDER BY right(id, -1)::integer;
太棒了!谢谢!这工作 – Shoaib
@Glorfindel不是你提到的问题的重复,即使一个解决方案是存在的。这个问题是关于为具有字母和数字字符的列创建新的PK。 – Patrick