在postgresql函数中搜索用户提供的char开头的值

时间:2013-11-20 07:04:07

标签: regex postgresql

我需要搜索以用户提供的char开头的字符串。我正在使用postgresql函数并返回SETOF -

CREATE OR REPLACE FUNCTION public._A1_loc_search15(in_pattern character varying) 
RETURNS setof character varying
AS
$$
SELECT coord FROM table1 WHERE loc_lb ~* '^in_pattern';
$$ 
LANGUAGE sql;

SELECT public._A1_loc_search15('A');

如果使用硬编码'^ A',则选择查询运行正常,而用户输入则无效。 任何有关如何正确使用它的见解都会有所帮助。 感谢。

2 个答案:

答案 0 :(得分:1)

看起来您实际上并未使用用户提供的in_pattern,而只是文字字符串"in_pattern"。所以,您正在搜索/^in_pattern/

答案 1 :(得分:0)

您需要使用实际变量:

SELECT coord FROM table1 WHERE loc_lb ~* ('^' || in_pattern);

您也可以使用like(或ilike):

SELECT coord FROM table1 WHERE loc_lb like (in_pattern || '%');