【问题标题】:PostgreSQL ORDER BY clause on numerical portion of text column [duplicate]文本列数字部分的 PostgreSQL ORDER BY 子句[重复]
【发布时间】:2015-12-12 15:36:22
【问题描述】:

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

G1,G2,G3,...Gn

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

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

我使用的查询是:

select * from myTable order by id asc;

【问题讨论】:

  • @Glorfindel 不是您提到的问题的副本,即使有解决方案。这个问题是关于为包含字母和数字字符的列创建一个新的 PK。

标签: sql postgresql sql-order-by


【解决方案1】:

您的id 列显然属于某种文本数据类型,因此按字母顺序排列,而不是按数字排列。要使其正常工作,请在订购时从 id 列中删除“G”:

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

【讨论】:

  • 太棒了!谢谢!那行得通
猜你喜欢
  • 1970-01-01
  • 2011-10-12
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多