从MySQL返回结果时的数字顺序

Wil*_*son 2 php mysql codeigniter natural-sort

我的数据库中的表中有以下类型的标题:

Topic 1 blah blah
Topic 2 blah blah 
Topic 3 blah blah
... 
Topic 10 blah blah
Topic 11 blah blah
etc...
Run Code Online (Sandbox Code Playgroud)

select查询将始终返回如下结果:

Topic 1 blah
Topic 10 blah blah
Topic 11 blah 
Run Code Online (Sandbox Code Playgroud)

...遗漏主题2,主题3等...直到所有的青少年后我将获得主题2等...

我怎样才能得到我的结果:

Topic 1
Topic 2
Topic 3
Run Code Online (Sandbox Code Playgroud)

....一直到主题9,然后才有主题10?

Mar*_*ers 5

这是数据库设计的问题.主题编号应存储为整数.如果您无法更改设计,请尝试此查询:

SELECT title
FROM table1
ORDER BY CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(title, ' ', 2), ' ', -1)
              AS UNSIGNED);
Run Code Online (Sandbox Code Playgroud)

结果:

'主题1 foo'
'主题2吧'
'主题10巴兹'

测试数据:

DROP TABLE IF EXISTS table1;
CREATE TABLE table1 (title VARCHAR(100) NOT NULL);
INSERT INTO table1 (title) VALUES
('topic 1 foo'),
('topic 2 bar'),
('topic 10 baz');
Run Code Online (Sandbox Code Playgroud)