ругулярки

MySQL/PostgreSQL/SQLite/Oracle/M$SQL/....

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

ругулярки

Непрочитанное сообщение Bormental » 2009-12-26 13:45:11

как реализовать условие И в регулярках, например ИЛИ работает при такой конструкции
SELECT * FROM `razdel2` WHERE TXT regexp 'закон|рф'
а И работает только в таком виде
SELECT * FROM `razdel2` WHERE TXT regexp 'закон' and TXT regexp 'рф'
можно как нибудь составить запрос чтото вроде
SELECT * FROM `razdel2` WHERE TXT regexp 'закон&&рф'
т.е. выводились строки где TXT содержит оба слова, независимо от порядка


есть еще конечно MATCH AGAINST но у меня он с cp1251 выдает все по нулям на кирилице, с латиницей работает нормально

мускл 5.1 виндовые и юниксовые сборки
:evil:

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: ругулярки

Непрочитанное сообщение zg » 2009-12-26 15:07:29

Bormental писал(а):SELECT * FROM `razdel2` WHERE TXT regexp '(закон.*рф)|(рф.*закон)'
Bormental писал(а):но у меня он с cp1251 выдает все по нулям
юзай UTF-8 и лучше юзать LIKE :roll:

Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Re: ругулярки

Непрочитанное сообщение Bormental » 2009-12-26 15:49:56

zg писал(а):
Bormental писал(а):SELECT * FROM `razdel2` WHERE TXT regexp '(закон.*рф)|(рф.*закон)'
это конечно интересно, а если слов 20? переборов многовасто будет, чем лайк лучше регекспа?
:evil:

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: ругулярки

Непрочитанное сообщение zg » 2009-12-26 16:01:38

Bormental писал(а):это конечно интересно, а если слов 20?
тогда только LIKE :smile:
Bormental писал(а):чем лайк лучше регекспа?
он лучше оптимизитрован

Аватара пользователя
Bormental
сержант
Сообщения: 267
Зарегистрирован: 2008-09-26 21:26:35
Откуда: подмордорье
Контактная информация:

Re: ругулярки

Непрочитанное сообщение Bormental » 2009-12-26 21:09:22

кстати LIKE не пахает с кирилицей в 1251 кодировочке))) на ютф както не хоца переписывать все
:evil:

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: ругулярки

Непрочитанное сообщение zg » 2009-12-26 21:23:43

http://anton-pribora.ru/articles/mysql/mysql-charsets/
...
Расставляя точки над и, Character Set - транслируется как "кодировка", а Collation - сравнение. В чём разница? Сравнение - это правила сравнения букв кодировки. Сравнения работают только в рамках кодировки, и нельзя сравнивать данные в латинице по правилам кирилицы. Поясню на примере: мы, как увидим позже, внесли данные в таблицу на латинице, а сортировать нужно на кирилице, для чего можно использовать ключевое слово collate:
Bormental писал(а):на ютф както не хоца переписывать все
всё и не нада, только базу