Цикл Postgres для каждого реестра и поиск по другой таблице - PullRequest
1 голос
/ 05 декабря 2011

Прежде всего, извините за мой плохой английский.

Я новичок в postgres и синтаксисе базы данных, у меня есть таблица с именем vars, а в другой таблице у меня есть реестр из текста, длинный текст.

Мне нужно искать в тексте, с регулярным выражением, все переменные, которые у меня есть.Если я сопоставлю одну из переменных в тексте, просто вернем выбор с помощью Ok.

Возможно ли это?

Опять же, извините, если мой английский плохой.

Лучшие отзывы.

1 Ответ

1 голос
/ 05 декабря 2011

Да, это возможно.

Звучит так, будто вы хотите использовать сохраненную функцию и возможность поиска по регулярному выражению, встроенную в Postgre.

Прочтите эту ссылку на методы поиска http://www.postgresql.org/docs/9.1/static/functions-matching.html

Я думаю, вы хотите что-то подобное.Обратите внимание, что я не скомпилировал это просто мой удар в голову, поэтому вам, возможно, придется немного подправить его и обязательно проверить его на соответствие вашим данным.Но, надеюсь, это даст вам общее представление.Я написал функцию ниже для единственной цели, поэтому вызывайте эту функцию для каждого значения переменной.Возможно, вы захотите вызвать это в функции-обертке, которая позволит вам сразу передать все значения var и перебрать все значения var, вызывая функцию ниже для каждого.

CREATE FUNCTION search_var(i_some_text_id IN INTEGER,i_regx IN TEXT) RETURNS VARCHAR AS $$
DECLARE
    is_found VARCHAR(6) :=  'NOT OK';
BEGIN

    SELECT 'OK' INTO is_found
    FROM some_text
    WHERE some_text_id = i_some_text_id
      AND text_value ~ i_regx;

    RETURN is_found;
END;
$$ LANGUAGE plpgsql;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...