如何按postgresql

时间:2015-09-22 06:35:46

标签: postgresql sorting sql-order-by numeric alphanumeric

我想对包含数字和字母数字项的列表进行排序,如下所示:

  • PIEZA1
  • 0001
  • PIEZA20
  • REF30
  • 234
  • REF2
  • FDGSDFG
  • PIEZA3
  • REF0004
  • REF2005

这就是我想留下来的方式:

  • 0001
  • 234
  • FDGSDFG
  • PIEZA1
  • PIEZA3
  • PIEZA20
  • REF0004
  • REF2
  • REF30
  • REF2005

但是,当我使用'order by'子句时,排序如下所示:

  • 0001
  • 234
  • FDGSDFG
  • PIEZA1
  • PIEZA20
  • PIEZA3
  • REF0004
  • REF2
  • REF2005
  • REF3

该顺序是因为句子检测到字符串列表,字符串的自然排序按字母顺序排列

我不知道如何将数字与字符串分开进行排序,首先使用数字,第二种使用字母数字顺序

2 个答案:

答案 0 :(得分:0)

是一个自然的排序你想要的是什么?尝试使用Order by Length(column), column

实际上,这只是短版本,并不总是按预期工作。如果您想要REAL自然排序,请使用:Natural Sort in MySQL

答案 1 :(得分:0)

您可以尝试将字母数字列转换为 bytea 数据类型并尝试这样:

SELECT colname
FROM tablename
ORDER BY colname::bytea;