在 postgresql--9.5 中的执行格式查询中动态使用 LIKE 模式
Using LIKE pattern dynamically in execute format query in postgresql--9.5
我想动态地将脚注插入 LIKE 模式,但它给出错误
ERROR: unrecognized conversion type specifier "'"........
这是我的查询:
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother LIKE ''%L%'' ', footext);
如果您想将 %
添加到格式字符串中,您需要将其加倍,例如%F%%
%L
也正确地添加了单引号,因此您不需要将它们放在格式字符串中。
但是:使用 %F%%
会生成 'bla'%
- 这是不正确的。
您需要将通配符添加到 变量 而不是格式字符串:
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
HERE foocolumnother LIKE %L' ', concat(footext, '%'));
晚会有点晚,但根据 Erwin 的 answer and the document,您还可以尝试正则表达式的 ~
字符。所以测试这个
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother ~ %L ', footext);
另一个迟到的条目。在 Postgres 11.x:
中,将单引号和百分比都加倍对我有用
l_query text := FORMAT('
SELECT e.gid, e.sessionname, e.shared, e.created, e.created_by
FROM exercise e
WHERE LOWER(e.created_by) LIKE ''%%%s%%'';'
, LOWER(p_user));
RETURN QUERY EXECUTE l_query;
我想动态地将脚注插入 LIKE 模式,但它给出错误
ERROR: unrecognized conversion type specifier "'"........
这是我的查询:
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother LIKE ''%L%'' ', footext);
如果您想将 %
添加到格式字符串中,您需要将其加倍,例如%F%%
%L
也正确地添加了单引号,因此您不需要将它们放在格式字符串中。
但是:使用 %F%%
会生成 'bla'%
- 这是不正确的。
您需要将通配符添加到 变量 而不是格式字符串:
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
HERE foocolumnother LIKE %L' ', concat(footext, '%'));
晚会有点晚,但根据 Erwin 的 answer and the document,您还可以尝试正则表达式的 ~
字符。所以测试这个
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother ~ %L ', footext);
另一个迟到的条目。在 Postgres 11.x:
中,将单引号和百分比都加倍对我有用l_query text := FORMAT('
SELECT e.gid, e.sessionname, e.shared, e.created, e.created_by
FROM exercise e
WHERE LOWER(e.created_by) LIKE ''%%%s%%'';'
, LOWER(p_user));
RETURN QUERY EXECUTE l_query;