我想根据'/us/'
是否在网址中进行排序。我目前有:
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
答案 0 :(得分:2)
你可以试试这个:
SELECT is_live, store_url from my_table where item_id = 1306085
ORDER BY instr(store_url, '/us/');
或:
SELECT is_live, store_url from my_table where item_id = 1306085
ORDER BY instr(store_url, '/us/') > 0 ;
答案 1 :(得分:1)
您可以创建function:
CREATE FUNCTION mycontains (s text, matchText VARCHAR(255))
RETURNS INT DETERMINISTIC
RETURN (CASE WHEN s LIKE CONCAT("%", matchText, "%") THEN 1 ELSE 0 END);
并像
一样使用它SELECT is_live, store_url from my_table where item_id = 1306085
ORDER BY mycontains(store_ul, "/us/") DESC
注意:已经有一个包含函数,我认为它适用于几何对象,这就是为什么我将这个命名为mycontains。