SQLite-Zeichenfolge enthält andere Zeichenfolgenabfrage


111

Wie mache ich das?

Wenn meine Spalte beispielsweise "Katzen, Hunde, Vögel" lautet und ich Zeilen abrufen möchte, in denen die Spalte Katzen enthält?


3
Bearbeiten Sie Ihre Frage mit einer Reihe von Beispieldaten. Es ist schwer genau zu bestimmen, wonach Sie fragen.
p.campbell

Alles Gute zum 100. Up-Vote.
Bischof

Antworten:


195

Verwenden von LIKE:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive

4
Beachten Sie, dass dies nicht geeignet ist, wenn die gesuchte Zeichenfolge variabel ist oder ein Sonderzeichen wie z %.
Sam

10
Wenn "Katzen" ein Feld aus einer anderen Tabelle ist, können Sie '%'||table2.field||'%'als ähnliche Kriterien verwenden
Stéphane Ch.

96

Während LIKEdies für diesen Fall geeignet ist, wird eine allgemeinere Lösung verwendet instr, bei der keine Zeichen in der Suchzeichenfolge maskiert werden müssen. Hinweis: instrist ab Sqlite 3.7.15 verfügbar .

SELECT *
  FROM TABLE  
 WHERE instr(column, 'cats') > 0;

LIKEBeachten Sie auch, dass zwischen Groß- und Kleinschreibung unterschieden wird , während zwischen instrGroß- und Kleinschreibung unterschieden wird .


13
Was bedeutet, dass Ihre minSdkVersion 21 (5.0-Lollipop) sein sollte
Maksim Turaev

1
@ WilliamEntriken In meinem eigenen Test instr(...)ist es etwas schneller (0,32s gegenüber 0,34s). Sie können .timer onin SQLite die Ausführungszeit messen.
Arnie97
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.