我使用的是Oracle 11.g,我有一个有三列的表:
ID Varchar2(512)
FIRST_NAME Varchar2(512)
LAST_NAME Varchar2(512)ID列同时存储数字和alpha字符。我想从表中选择三列: ID、LAST_NAME和FIRST_NAME。我想按ID列进行排序,但将数字排序为数字,并首先出现。
例如:
ID FN LN
3 Joe Jones
200 Sam Smith
1004 Tom Terrific
AA Cam Carson
MM Ed Edison我将如何构建用于此的Select语句?
我只能用:
Select to_number(ID), LAST_NAME, FIRST_NAME
From CUSTOM_TABLE
Where ID < 'A'
Order by to_number(ID);我只能用:
Select ID, LAST_NAME, FIRST_NAME
From CUSTOM_TABLE
Where ID > 'A'
Order by ID;我试验过工会/工会,但似乎没有得到我想要的结果。谢谢你看这个。
发布于 2018-03-15 21:06:53
您可以使用多个键来完成此操作:
order by (case when regexp_like(id, '^[0-9]+$') then 1 else 2 end),
(case when regexp_like(id, '^[0-9]+$') then cast(id as int) end),
id上面写着:
id是一个数字,那么把它放在第一位。id是一个数字,那么按数字进行排序。id本身作为字符串进行排序。https://stackoverflow.com/questions/49309170
复制相似问题