SQL命令按字符串末尾的数字

H. *_*rid 1 mysql sql sql-order-by

我有一个带有一些列的表,我想按“ post_id”列排序选择。这些行是这样的:“ rgpost0”,“ rgpost1”,“ rcpost2”,...

如何按“ post_id”列的值末尾的数字对选择进行排序?

该代码不起作用: SELECT * FROM posts_info ORDER BY post_id+0 DESC

我不想将列类型更改为数字。我只想按数字在字符串的末尾进行排序。

for*_*pas 5

您可以使用reverse()两次:

SELECT * FROM posts_info 
ORDER BY reverse(reverse(post_id) + 0) + 0 DESC
Run Code Online (Sandbox Code Playgroud)

对于此表:

create table posts_info(id int, post_id varchar(100));
insert into posts_info(id, post_id) values
(1, 'bob52'),
(2, 'alice634'),
(3, 'john12'),
(4, 'mark7'),
(5, 'mary001');
Run Code Online (Sandbox Code Playgroud)

结果:

| id  | post_id  |
| --- | -------- |
| 2   | alice634 |
| 1   | bob52    |
| 3   | john12   |
| 4   | mark7    |
| 5   | mary001  |
Run Code Online (Sandbox Code Playgroud)

参见演示