我有一个名为code
的专栏,如下所示:1-100-ETC-60
,1-100-ETC-20
,1-100-ETC-70
最后两个字符始终以6,2或7开头。
如果我执行ORDER BY SUBSTRING(代码,13)ASC或DESC,它将按数字顺序对它们进行排序。认为这不是我想要的(或客户想要的)。
正确的排序顺序应该是:6然后是2然后是7.
只想通过使用SQL查询来了解这是否可行。
答案 0 :(得分:3)
您可以使用MySQL的FIELD()
功能:
ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')
答案 1 :(得分:1)
使用案例陈述。
ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END
应将6转换为1,以便在本例中将2和7转换为
(在mysql中索引的子串是1,所以它是11,而不是10)