我的表格中有一个数字列,我必须根据该列值的最后一位数来订购记录。
对于ex,我希望所有记录以'2'结尾并由'John'先创建,然后保持如下左侧
## Number ## ## CreatedBy ##
3234445452 John
3432454542 John
3432454572 Alex
1234567890 John
3432432441 John
感谢您的帮助......
答案 0 :(得分:2)
如果您想按最后一位数字排序,可以使用mod(value, 10)
。如果你真的希望首先以2
结尾(我认为这不比其他要求那么陌生)那么你可以在order by子句中使用case
语句:< / p>
with t42 as(
select 3234445452 as value from dual
union all select 3432454542 from dual
union all select 1234567890 from dual
union all select 3432432441 from dual
)
select value
from t42
order by case when mod(value, 10) = 2 then 0 else 1 end, mod(value, 10), value;
VALUE
----------
3234445452
3432454542
1234567890
3432432441
因此,首先以2
结尾,然后按最后一位数排序,所以结尾'桶'将是2, 0, 1, 3, 4, 5, ...
,来自{{1}的前两个参数}。然后第三个参数在每个'桶'中按数字顺序排列值,这将order by
放在3234445452
之前。
您可以在3432454542
中添加其他字段。你只需要为字符串order by
;这可能有点过头了:
case
答案 1 :(得分:-1)
SELECT字段, SUBSTR(字段,长度(TRIM(字段)),1),
FROM table
样品
值最后一个Field,Lenght,没有长度空间的字段
00004 4 20 5