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


Автор: Avrely 26.7.2009, 12:24
Нужно получить все данные где есть слово Nas. Сначало попробовал через Like %Nas% но при этом получаю также Anastasia
В базе данные есть 
Kanye West, NaS, Rakim, KRS-One
Graham Nash
Nas

Как составить запрос чтобы не выводился Graham Nash, а выводились данные где nas является целом словом.

Автор: Gluttton 26.7.2009, 13:56
Цитата

Нужно получить все данные где есть слово Nas


Раз слово, значит Nas должно быть ограничено:
- пробел, пробел;
- пробел, дефис;
- дефис, пробел;
- дефис, дефис;
- другое (в зависимости от предметной области).

[Firebird 2.1]
Для таблицы Т:
user posted image

Запрос:
Код

SELECT T.A
FROM T
    WHERE T.A LIKE 'Nas'
    OR T.A LIKE '% Nas'
    OR T.A LIKE 'Nas %'
    OR T.A LIKE '%-Nas'
    OR T.A LIKE 'Nas-%'
    OR T.A LIKE '%-Nas-%'
    OR T.A LIKE '% Nas %'


Вернет следующие данные:
user posted image.

Автор: DimW 27.7.2009, 10:10
удалил

Автор: Zloxa 27.7.2009, 10:30
Код

SQL> -- тест данные
SQL> with t as (select 'Nas' str from dual
  2             union all select 'hello, NaS!' from dual
  3             union all select 'Graham Nash' from dual
  4             union all select 'podnasrat''' from dual
  5             union all select 'prosto nasrat''' from dual
  6             union all select 'prosto nas rat''' from dual
  7             union all select 'Nas ne dogonish' from dual
  8             union all select 'dogonish ne nas' from dual
  9             )
 10  -- запрос
 11  select * from t
 12  where regexp_like(str,'(\W|^)nas(\W|$)','i')
 13  /
 
STR
---------------
Nas
hello, NaS!
prosto nas rat'
Nas ne dogonish
dogonish ne nas
 
SQL> 

Автор: Avrely 27.7.2009, 13:05
Zloxa, mysql пишет что нет такой функции как  regexp_like. 

Автор: Zloxa 27.7.2009, 13:28
Avrely, А кто тут упомянал MySql?

RTFM http://dev.mysql.com/doc/refman/5.1/en/regexp.html#operator_regexp

Автор: Avrely 27.7.2009, 18:18
Zloxa,  могли бы написать пример на SQL ?  smile 

Автор: Zloxa 27.7.2009, 20:37
?
Код

where column rlike '[[:<:]]nas[[:>:]]'

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