Результат заказа в Sqlite - PullRequest
2 голосов
/ 10 мая 2010

В MySQL мой sql похож на следующий

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'

равный сим - это фрист, сим% - второй, а% сим% - три, а затем% сим - последний.

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

Ответы [ 2 ]

3 голосов
/ 10 мая 2010

Вы должны использовать выражение CASE вместо 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`
1 голос
/ 10 мая 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...