|
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
|