2010-05-10 2 views
2

В MySQL, мой SQL, как следующийЗаказать Результат в Sqlite

SELECT * , IF(`Word` = 'sim', 1, IF(`Word` LIKE 'sim%', 2, IF(`Word` LIKE '%sim', 4, 3))) AS `sort` 
FROM `dblist` 
WHERE `Word` LIKE '%sim%' 
ORDER BY `sort` , `Word` 

Этот SQL не работает в SQLite. Я хочу сделать результирующий порядок.

SELECT * FROM dblist where word like 'sim' or word like 'sim%' or word like '%sim%' or word like '%sim' 

равно сим является Фрист, сим% занимает второе место и% сим% является thrid%, а затем сим является последним.

В настоящее время я не могу сортировать как mysql в sqlite. Как изменить sql для заказа результата?

+0

«Этот SQL не работает» - Вы можете разместить ошибку вы получаете? Нам гораздо легче решить вашу проблему, когда вы расскажете нам, в чем проблема. –

ответ

3

Вы должны использовать CASE expression вместо IF, поскольку последний не поддерживается SQLite. Вот это SQL вам нужно:

SELECT 
    *, 
    CASE WHEN `Word` = 'sim' THEN 1 
     WHEN `Word` LIKE 'sim%' THEN 2 
     WHEN `Word` LIKE '%sim' THEN 4 
     ELSE 3 
    END `sort` 
FROM `dblist` 
WHERE `Word` LIKE '%sim%' 
ORDER BY `sort` , `Word` 
+0

Snap. :) Но ваше форматирование лучше;) –

+0

Thank. Я понял. – saturngod

1
SELECT * , case when `Word` = 'sim' then 1 else case when `Word` LIKE 'sim%' then 2 else case when `Word` LIKE '%sim' then 4 else 3 end end end as sort 
FROM `dblist` 
WHERE `Word` LIKE '%sim%' 
ORDER BY `sort` , `Word 
Смежные вопросы