Werte finden in einer SQLite DB

Hallo

Ich habe eine SQLite DB in einer App die aus einer MySQL DB konvertiert worden ist. In einer Tabelle suche ich in der MySQL DB mit “find_in_set”, wenn ich das richtig sehe, versteht SQlite aber diesen Ausdruck nicht.

Frage: Wie komme ich an die richtigen Zeilen.

Beispiel der Daten


|auto|       |ps|         | Hangar
bmw,audi,vw  |105,120,240 |Hangar 1|

Ich möchte eine Anfrage bauen wo ich wissen will ob ein audi mit 120 ps vorhanden ist UND GANZ wichtig im welchen Hangar es ist.

Danke euch allen

merkwürdiges Feature, merkwürdige Art Daten zu speichern,
besonders falls je eine PS-Zahl nur zu einem Auto gehört, brauchst du also auch gleichen Index?

dennoch wie leicht zu denken eine Standardfrage von sicher auch vielen vor dir
-> Suchmaschine ‘find_in_set SQLite’
sql - What is the equivalent function in sqlite for find_in_set(value,set) in MySQL? - Stack Overflow
recht ausführlich zur like-Lösungsvariante, die allerdings ohne Index…

Hallo

Kannst du bitte das hier erläutern “die allerdings ohne Index…” ich bin wie du merkst nicht fit in der Materie.

PS:
|auto| |ps| | Hangar
bmw,audi,vw |105,120,240 |Hangar 1|

Sind 9 Autos die alle verschieden sind und alle in Hangar 1 sind. Nur zum besseren Verständnis.

du bist derjenige der find_in_set() einsetzt, nicht ich :wink:
ok, ich bin derjenige, der nicht so gut verständlich ist…

ich meinte, falls deine DB nur 3 Autos enthält, bmw = 105ps, audi=120ps usw.,
dann dürfte die Query ja mit
select .. from .. where find_in_set('audi',auto) = find_in_set('120',ps) funktionieren,
weil find_in_set einen Index liefert (Widerspruch zum Set-Gedanken, aber nicht meine Idee, nur gelesen),
bei anderer Sortierung der Daten in den ‘Sets’, eher Listen, dagegen nicht gefunden


das just diese 3 Autos jeweils diese 3 PS-Zahlen haben zu ‘9 Autos’, das klingt ja eher unwahrscheinlich, aber bitte, macht die Query leichter, also
select .. from .. where find_in_set('audi',auto) > 0 and find_in_set('120',ps) > 0?

dafür wäre die LIKE-Lösung aus dem Link denkbar, die sollte das schaffen, wenn auch vielleicht langsam, wie LIKE so ist,
find_in_set() aber vielleicht auch langsam, falls MySQL dafür nicht speziellen Index hat…


anderes Datenmodell evtl. Alternative, auch wenn es kaum eine Nennung von mir dafür braucht,
nun steht die Nennung trotzdem da, tja, so ist der Lauf der Dinge