我有一个帖子表,其标题按“人类”字母顺序排列,但不按计算机字母顺序排列。它们有两种形式,数字和字母:
数值:图1.9、图1.10、图1.11……
按字母顺序排列:图 1A ... 图 1Z ... 图 1AA
如果我orderby
命名,结果是 1.10-1.19 介于 1.1 和 1.2 之间,而 1AA-1AZ 介于 1A 和 1B 之间。但这不是我想要的;我想要“人类”字母顺序,其中 1.10 在 1.9 之后,1AA 在 1Z 之后。
我想知道 SQL 中是否还有一种方法可以使用字符串操作(或其他我没有想到的东西)来获得我想要的顺序。
我不是 SQL 专家,所以我不知道这是否可能,但如果有办法进行条件替换,那么我似乎可以通过这样做来强加我想要的顺序:
删除句号(可以用 来完成
replace
,对吧?)如果剩余的数字超过三个字符,则在第一个字符后添加一个
0
(零)。
这似乎给了我想要的结果:1.9
会变成109
,它在之前110
;1Z
会变成10Z
,这在之前1AA
。但它可以在 SQL 中完成吗?如果是这样,语法是什么?
请注意,我不想修改数据本身——只是为了按照描述的顺序输出查询结果。
这是在 Wordpress 安装的上下文中,但我认为这个问题更适合 SQL 问题,因为各种事情(例如分页)取决于 MySQL 查询阶段发生的排序,而不是 PHP。