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.