Как получить все строки, содержащие строку в поле (SQL)? - PullRequest
0 голосов
/ 22 ноября 2011

У меня есть таблица под названием article, и я хочу получить все статьи, содержащие тег, в поле articleTags. Поле articleTags содержит набор строк, разделенных запятыми (теги).

Если я пытаюсь найти статью, содержащую тег php из таблицы, он должен вернуть результаты, для которых поле articleTags выглядит следующим образом -

  • PHP
  • C ++, PHP, Python

Если бы я делал это на PHP, я бы просто использовал explode, но я не хочу просматривать каждую строку в базе данных, а вместо этого использовать более эффективный метод.

Ответы [ 3 ]

3 голосов
/ 22 ноября 2011

вы можете использовать оператор like

select * from articles where tag like '%php%'

если вы беспокоитесь о тегах, которые не являются php, но имеют php, например, phphp, то вы можете использовать с запятой

select * from articles where tag like '%php,%' or tag like '%,php%'
1 голос
/ 22 ноября 2011

В Oracle вы можете использовать "Текст Oracle"

И просто запросить данные типа

select * from articles where contains(fieldName, contentText) > 0

О текстовых запросах Oracle вы можете прочитать здесь

1 голос
/ 22 ноября 2011

соответствует:

  1. PHP
  2. randomwordphp
  3. phprandomword
  4. randomphpword

Запрос

SELECT *
FROM articles
WHERE articleTags LIKE "%php%"
...