每个注册表的Postgres循环并在另一个表中搜索

时间:2011-12-05 12:46:04

标签: postgresql

首先,抱歉我的英语不好。

我是postgres和数据库语法的新手,我有一个名为vars的表,而在另一个表中我有一个来自文本的注册表,一个长文本。

我需要使用正则表达式搜索我拥有的每个变量的文本。如果我匹配文本中的一个变量,只需返回一个带有确定的选项。

这可能吗?

再次,抱歉,如果我的英语不好。

最好的关注。

1 个答案:

答案 0 :(得分:1)

是的,这是可能的。

听起来你想要使用存储的函数和Postgre内置的正则表达式搜索功能。

阅读此搜索方法http://www.postgresql.org/docs/9.1/static/functions-matching.html

的链接

我想你想要这样的东西。请注意,我没有编译这只是我的脑袋,因此您可能需要稍微调整一下,并确保根据您的数据进行测试。但希望它能给你一般的想法。我编写下面的函数只有一个目的,所以为每个var值调用这个函数。您可能希望在包装器函数中调用它,该函数允许您一次传递所有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;