我有一个具有列(cat_name)的表.有些是字符串后跟数字,其他字符串只是普通字符串.我喜欢通过首先将所有字符串以'Level'开头来安排它.
期望的输出:
我用过这个查询
SELECT * FROM category ORDER BY
(CASE WHEN cat_name LIKE 'Level%' THEN 0
ELSE 1
END) ASC, cat_name
Run Code Online (Sandbox Code Playgroud)
得到了
并在stackoverflow中找到此查询以进行自然排序
SELECT * FROM category WHERE cat_name LIKE 'Level%' ORDER BY LEFT(cat_name,LOCATE(' ',cat_name)), CAST(SUBSTRING(cat_name,LOCATE(' ',cat_name)+1) AS SIGNED), cat_name ASC
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将它与我的第一个查询集成.我能得到的最接近的是
SELECT * FROM category ORDER BY LEFT(cat_name,LOCATE(' ',cat_name)), CAST(SUBSTRING(cat_name,LOCATE(' ',cat_name)+1) AS SIGNED),
(CASE WHEN cat_name LIKE …Run Code Online (Sandbox Code Playgroud) 假设我有一张桌子:
当前表格:
title_id title_name title_qty
1 A.I. Artificial Intelligence 2
2 Batman Begins 40
3 2012 7
4 101 Dalmatians 23
5 Act of Valor 1
6 Batman 50
7 20 Million Miles to Earth 340
Run Code Online (Sandbox Code Playgroud)
我希望得到一个输出:
期望的输出:
title_id title_name title_qty title_char
4 101 Dalmatians 23 #
7 20 Million Miles to Earth 340 #
3 2012 7 #
1 A.I. Artificial Intelligence 2 A
5 Act of Valor 1 A
6 Batman 50 B
2 Batman Begins 40 B …Run Code Online (Sandbox Code Playgroud)