PHP按长度排序但忽略字符

时间:2015-11-24 20:54:41

标签: php sorting

我正在更改一个php插件,并且很难从数据库中获取数组的排序。截至目前,我喜欢它:

order by LENGTH(name), name

让我接近但不对劲。输出如下:

8.2-11 8.2-12 8.2-13 8.2-14 8.2-13-A

我理解,因为8.2-13-A8.2-13长,所以它会在最后。如何忽略-A-B,以便两个8.2-13相互匹配?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用以下内容找到-符号的最后一次出现: LENGTH(name) - LOCATE("-", REVERSE(name))

有了这些信息,应该可以只使用原始字符串的子字符串,如: ORDER BY LENGTH(SUBSTRING(name, (LENGTH(name) - LOCATE("-", REVERSE(name))))), SUBSTRING(name, (LENGTH(name) - LOCATE("-", REVERSE(name))))

但是我很确定这会对性能造成严重影响。 使用stored procedure实现解决方案或者直接在php中执行此操作可能更好。