|
|
ru.linux- RU.LINUX --------------------------------------------------------------------- From : Eugeny Balakhonov 2:5020/3240.50 21 Sep 2002 02:17:03 To : All Subject : Postgres и регулярные выражения --------------------------------------------------------------------------------
Понадобилось мне устроить поиск по словам в поле таблицы типа varchar.
Причем LIKE явно мне не подоходит, а нужны регулярные выражения. С
удовлетворением нашел в документации к PostgreSQL 7.2, что таковые во всю
поддерживаются. Ура! Hу думаю щас как напишу, да как заработает... Ага.. Аж два
раза...
Итак имеем таблицу
CREATE TABLE T (TITLE VARCHAR(256), MSGBODY TEXT);
INSERT INTO T VALUES ('Test message 1', 'Body of test message 1');
INSERT INTO T VALUES ('Test message 2', 'Body of test message 2');
INSERT INTO T VALUES ('Test message 3', 'Body of test message 3');
Пробуем как в примере в документации
SELECT * FROM T WHERE MSGBODY ~* '.*test.*';
Работает.
SELECT * FROM T WHERE MSGBODY ~* '.*test message.*';
работает
SELECT * FROM T WHERE MSGBODY ~* '.*test\smessage.*';
SELECT * FROM T WHERE MSGBODY ~* '.*test\s*message.*';
SELECT * FROM T WHERE MSGBODY ~* '.*test\s+message.*';
SELECT * FROM T WHERE MSGBODY ~* '.*test\s?message.*';
SELECT * FROM T WHERE MSGBODY ~* '.*test(\s?)message.*';
....
Фиг вам.
SELECT * FROM T WHERE MSGBODY ~* '.*message \d+';
фиг вам
И как это называется?
Что не так делаю. Hе могут же быть такие откровенные глюки! Поддержку RE ведь не
вчера в Postgres добавили!
Best regards,
Eugeny
E-mail: c0ff75@mail.ru ICQ: 5456961
P.S. Может кто знает другой способ устроить полнотекстовые поиск в базе
Postgres?
--- GoldED+ 1.1.4.5 (WinNT 5.1.2600-Service_Pack_1 i686)
* Origin: Собака с милицией обещала придти! (2:5020/3240.50)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.linux/256153d8ba023.html, оценка из 5, голосов 10
|