我想按'/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