我有一个帖子表格,其中标题按照“人类”字母顺序排列,但不是按照计算机字母顺序排列。这些标题有两种类型,数字和字母:
- 数字:Figure 1.9, Figure 1.10, Figure 1.11... - 字母:Figure 1A ... Figure 1Z ... Figure 1AA
如果我按标题
我想知道是否仍然有一种方式可以在SQL中使用字符串操作(或其他我没有想到的内容)获得我想要的顺序。
我不是SQL专家,所以不知道是否可能,但如果有条件替换的方法,那么似乎我可以通过执行以下操作来强制执行所需的顺序:
1.删除句号(可以使用
这似乎会给我想要的结果:
请注意,我不想修改数据本身,只想以所述顺序输出查询结果。
这是在WordPress安装的上下文中,但我认为问题更适合是一个SQL问题,因为各种事情(如分页)取决于MySQL查询阶段发生的排序,而不是在PHP中进行排序。
- 数字:Figure 1.9, Figure 1.10, Figure 1.11... - 字母:Figure 1A ... Figure 1Z ... Figure 1AA
如果我按标题
orderby
,结果是1.10-1.19在1.1和1.2之间,而1AA-1AZ在1A和1B之间,但这不是我想要的;我想要“人类”字母顺序,其中1.10在1.9之后,1AA在1Z之后。我想知道是否仍然有一种方式可以在SQL中使用字符串操作(或其他我没有想到的内容)获得我想要的顺序。
我不是SQL专家,所以不知道是否可能,但如果有条件替换的方法,那么似乎我可以通过执行以下操作来强制执行所需的顺序:
1.删除句号(可以使用
replace
完成,对吗?)
2.如果剩余的数字超过三个字符,则在第一个字符后添加 0
(零)。这似乎会给我想要的结果:
1.9
将变为 109
,出现在 110
之前; 1Z
将变为 10Z
,出现在 1AA
之前。但是它可以在SQL中完成吗?如果可以,语法是什么?请注意,我不想修改数据本身,只想以所述顺序输出查询结果。
这是在WordPress安装的上下文中,但我认为问题更适合是一个SQL问题,因为各种事情(如分页)取决于MySQL查询阶段发生的排序,而不是在PHP中进行排序。
1 => 1.1
和10 = 1.10
。 - Kermit{identifier} | 图1.1 | 这是图的标题
。两个|
符号总是出现在Figure 1.1
的两侧,因此我认为获取子字符串Figure 1.1
相对容易。 - supertrue