Строка SQLite содержит другой строковый запрос

72

Как это сделать?

Например, если мой столбец "кошки, собаки, птицы", и я хочу получить любые строки, в которых столбец содержит кошек?

  • 3
    отредактируйте свой вопрос с набором образцов данных. Трудно точно определить, что вы просите.
Теги:

2 ответа

132
Лучший ответ

Использование LIKE:

SELECT *
  FROM TABLE
 WHERE column LIKE '%cats%'  --case-insensitive
  • 3
    Имейте в виду, что это не подходит, когда искомая строка является переменной или содержит специальный символ, такой как % .
  • 5
    если "cats" - это поле из другой таблицы, вы можете использовать '%'||table2.field||'%' в качестве аналогичных критериев
49

В то время как LIKE подходит для этого случая, более общим решением является использование instr, который не требует символов в строке поиска, которая должна быть экранирована. Примечание: instr доступен начиная с Sqlite 3.7.15.

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

Кроме того, имейте в виду, что LIKE не чувствителен к регистру, тогда как instr чувствителен к регистру.

  • 11
    Это означает, что ваш minSdkVersion должен быть 21 (5.0-Lollipop)
  • 1
    Использует ли instr (...)> 0 так же быстро, как и LIKE?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню