0

我有这个名为code看起来像的专栏: 1-100-ETC-60,,,1-100-ETC-201-100-ETC-70

最后两个字符总是以 6、2 或 7 开头。

如果我通过 SUBSTRING(code,13) ASC 或 DESC 进行排序,它将按数字顺序对它们进行排序。认为这不是我想要的(或客户想要的)。

正确的排序顺序应该是:6 然后 2 然后 7。

只是想知道这是否可以仅通过使用 SQL 查询来实现。

4

2 回答 2

3

您可以使用 MySQL 的FIELD()功能:

ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')
于 2012-06-29T17:01:54.313 回答
1

使用案例陈述。

 ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END 

在这种情况下,应将 6 转换为 2 和 7 进行排序

(子字符串在 mysql 中索引为 1,所以是 11,而不是 10)

于 2012-06-29T16:46:41.677 回答