我想按'/us/'
是否在url中排序。我目前有:SQL按字符串排序
SELECT is_live, store_url from my_table where item_id = 1306085
ORDER BY (CASE WHEN store_url LIKE '%/us%' THEN 1 ELSE 0 END) DESC
有沒有更乾淨的方法來做到這一點,或者是上述唯一的方法?從概念上講,我正在尋找一些更可讀,如:
ORDER BY store_url.contains('/us/') DESC
您可以在MySQL中創建一個存儲函數或用戶定義的函數(http://dev.mysql.com/doc/refman/5.7/en/create-function.html)。 –
@FrankJ感謝您的想法,這是一個整潔的方法。你能否在回答中表明如何解決上述問題? – David542
您不需要轉換,無論如何,true都被視爲1,而false則被視爲0。所以'ORDER BY store_url LIKE'%/ us%''DESC'應該沒問題......如果你希望它看起來更像是一個函數調用,你可以使用[INSTR](http://dev.mysql.com/doc /refman/5.7/en/string-functions.html#function_instr)函數...雖然它返回實際找到的位置,所以您希望在'INSTR(...)= 0 ASC'上進行排序,以防止不必要的排名位置在字符串中。 – Uueerdo