首先,抱歉我的英语不好。
我是postgres和数据库语法的新手,我有一个名为vars的表,而在另一个表中我有一个来自文本的注册表,一个长文本。
我需要使用正则表达式搜索我拥有的每个变量的文本。如果我匹配文本中的一个变量,只需返回一个带有确定的选项。
这可能吗?
再次,抱歉,如果我的英语不好。
最好的关注。
答案 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;