2 Stimmen

Ergebnis der Bestellung in Sqlite

In MySQL sieht mein Sql wie folgt aus

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`

Diese Sql-Datei funktioniert nicht in SQlite. Ich möchte das Ergebnis bestellen.

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

Gleich sim ist eine erste, sim% ist eine zweite und %sim% ist eine dritte und %sim ist eine letzte.

Derzeit kann ich nicht wie mysql in sqlite sortieren. Wie kann ich Sql ändern, um das Ergebnis zu sortieren?

3voto

Mark Byers Punkte 761508

Sie sollten eine CASE-Ausdruck anstelle von IF da letzteres von SQLite nicht unterstützt wird. Hier ist das SQL, das Sie benötigen:

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`

1voto

My Other Me Punkte 4777
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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X