按字母顺序和数字顺序排序导致sql查询

时间:2012-06-04 07:03:03

标签: postgresql select numerical alphabetical database-table

我想从某个表(例如“table1”)中选择一个SELECT(例如“column1”),其中包含一个字母后跟一个数字(例如z98,k87,a245,a241,d7) ,e91,e32,b212,r101,r32)

有没有办法制作一个选择,按照字母顺序使用第一个字母对该列进行排序,然后使用后面的数字进行升序? (例如a241,a245,b212,e32等) 目的是根据结果中的字母填写用户界面上的数据表,如下所示:

datatable_A= 
241 
245

datatable_B =
212

datatable_D= 
32
91

datatable_K=
87

datatable_R=
32
101

datatable_Z=
98

2 个答案:

答案 0 :(得分:1)

如果你的意思是数字应该用数字处理而不是字符串:

create table table1 (column1 text);
insert into table1 (column1) values
('z98'), ('k87'), ('a245'), ('a241'), ('d7'), ('e91'), ('e32'), ('b212'), ('r101'), ('r32')
;

select 
    substring(column1 from 1 for 1) as datatable, 
    substring(column1 from 2)::integer as "number"
from table1
order by 
    datatable, 
    "number"
;
 datatable | number 
-----------+--------
 a         | 241
 a         | 245
 b         | 212
 d         | 7
 e         | 32
 e         | 91
 k         | 87
 r         | 32
 r         | 101
 z         | 98
(10 rows)

答案 1 :(得分:0)

select 'a' || column from tableA union select 'b' || column from tableB ... order by column asc;这样的东西。
没有自己尝试,但你应该调查一下。

相关问题