我有這列叫做code
看起來像:1-100-ETC-60
,1-100-ETC-20
,1-100-ETC-70
使用MySQL的ORDER BY子句中,是有可能爲了通過某些字段和自定義爲了
最後兩個字符總是要開始或者6,2或7.
如果我按ORDER BY SUBSTRING(code,13)ASC或DESC進行排序,它們將按數字順序排序。以爲這不是我想要的(或客戶想要的)。
正確的排序順序應該是:6,然後2然後7
只是想知道這是否可能只通過使用SQL查詢。
我有這列叫做code
看起來像:1-100-ETC-60
,1-100-ETC-20
,1-100-ETC-70
使用MySQL的ORDER BY子句中,是有可能爲了通過某些字段和自定義爲了
最後兩個字符總是要開始或者6,2或7.
如果我按ORDER BY SUBSTRING(code,13)ASC或DESC進行排序,它們將按數字順序排序。以爲這不是我想要的(或客戶想要的)。
正確的排序順序應該是:6,然後2然後7
只是想知道這是否可能只通過使用SQL查詢。
你可以使用MySQL的FIELD()
功能:
ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')
使用case語句。
ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END
應在6轉換爲一個用於與2並且在這種情況下,7排序
(子串是1索引在MySQL,所以它是11,而不是10)
你想添加「,SUBSTRING(code,12)」到那個以正確的順序得到其餘的代碼,如果它包括60,61,62等,對嗎? – Ghost
@ user1428799:聽起來對我很好。 – eggyal
這就是我所做的。運作良好。謝謝。這個也比CASE方法稍短。 – 40Plot