我想从某个表(例如“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
答案 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;
这样的东西。
没有自己尝试,但你应该调查一下。