0

我想从一个包含一个字母后跟一个数字的列(例如“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
4

2 回答 2

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)
于 2012-06-04T11:08:57.880 回答
0

类似的东西select 'a' || column from tableA union select 'b' || column from tableB ... order by column asc;
自己没有尝试过,但您应该研究一下。

于 2012-06-04T07:06:53.063 回答