I have a table like:
id name -------- 1 clark_009 2 clark_012 3 johny_002 4 johny_010
I need to get results in this order:
johny_002 clark_009 johny_010 clark_012
Do not ask me what I already tried, I have no idea how to do this.
SELECT *FROM yourTableName ORDER BY RIGHT(yourColumnName,3) yourSortingOrder; Just replace the 'yourSortingOrder' to ASC or DESC to set the ascending or descending order respectively. Here is the query to order by last 3 chars. Case 1 − Get the result in ascending order.
I want to select the last 3 rows of an sql table. I know I should use SELECT * FROM table ORDER BY DESC LIMIT 3 , but the problem with this code is that it selects the rows from the end. For example, it selects 30, then 29, then 28. But, I need them in this format: 28, 29, 30 .
you can get the last four digit of a number in oracle by using simple substr function.
This will do it, very simply selecting the right-most 3 characters and ordering by that value ascending.
SELECT * FROM table_name ORDER BY RIGHT(name, 3) ASC;
It should be added that as your data grows, this will become an inefficient solution. Eventually, you'll probably want to store the numeric appendix in a separate, indexed integer column, so that sorting will be optimally efficient.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With