我需要搜索以用户提供的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',则选择查询运行正常,而用户输入则无效。 任何有关如何正确使用它的见解都会有所帮助。 感谢。
答案 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 || '%');