Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > Не учитывать теги при выборке с LIKE


Автор: AXS 24.6.2011, 16:53
Делаю выборку запросом вида:
Код

SELECT * FROM `my_table` WHERE `text` LIKE '%div%' 


При этом в таблице содержится текст с тегами. Например:
Код

<div>Тег div является блочным</div>

Код

<div>Тег p тоже блочный</div>

Так вот естественно выбираются обе записи. 

Как вырезать все теги подобно strip_tags() в PHP? Или как перестроить запрос, чтобы он не учитывал текст между '<' и '>'?

PS: Всё это в контексте PHP происходит —
Код

  $query = "SELECT * FROM `my_table` WHERE `text` LIKE '%div%' ";
  $res = mysql_query($query);

Автор: triclosan 24.6.2011, 17:42
наверняка можно и красивее, но 
Код

SELECT * 
FROM `my_table` 
WHERE REPLACE(REPLACE(`text`, '<div>', ''), '</div>', '')  LIKE '%div%' 

Автор: AXS 25.6.2011, 07:32
Цитата(triclosan @ 24.6.2011,  17:42)
наверняка можно и красивее, но 
Код

SELECT * 
FROM `my_table` 
WHERE REPLACE(REPLACE(`text`, '<div>', ''), '</div>', '')  LIKE '%div%' 

Не пойдёт. Как быть с тегом 
Код

<img src="/images/54875.jpg" />
 ??

Автор: triclosan 25.6.2011, 13:32
имхо спасет только написание процедурки 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)