Order by last 3 chars

后端 未结 4 1878
借酒劲吻你
借酒劲吻你 2020-12-14 06:56

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:

相关标签:
4条回答
  • 2020-12-14 07:41

    You may apply substring_index function to parse these values -

    select * from table order by substring_index(name, '_', -1)
    
    0 讨论(0)
  • 2020-12-14 07:51

    you should try this.

    SELECT * FROM Table order by SUBSTRING(name, -3);
    

    good luck!

    0 讨论(0)
  • 2020-12-14 07:52

    You can use MySQL SUBSTRING() function to sort by substring

    Syntax : SUBSTRING(string,position,length)

    Example : Sort by last 3 characters of a String

    SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3);
    #OR
    SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, -3,3);
    

    Example : Sort by first 3 characters of a String

    SELECT * FROM TableName ORDER BY SUBSTRING(FieldName, 1,3);
    

    Note : Positive Position/Index start from Left to Right and Negative Position/Index start from Right to Left of the String.

    Here is the details about SUBSTRING() function.

    0 讨论(0)
  • 2020-12-14 08:01

    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.

    0 讨论(0)
提交回复
热议问题