我想动态地将footext插入到LIKE模式中,但它会出错
错误:无法识别的转换类型说明符“'”........
这是我的疑问:
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother LIKE ''%L%'' ', footext);
答案 0 :(得分:1)
如果您想在格式字符串中添加Stage
,则需要将其加倍,例如fitColumns
%
也会正确添加单引号,因此您无需将它们放入格式字符串中。
但是:使用%F%%
会生成%L
- 这是不正确的。
您需要将通配符添加到变量而不是格式字符串:
%F%%
答案 1 :(得分:1)
参加聚会的时间已经很晚了,但根据Erwin的answer和document,您还可以尝试正则表达式的~
字符。所以测试一下这个
RETURN QUERY EXECUTE format ('SELECT foocolumn
FROM footable
WHERE foocolumnother ~ %L ', footext);
答案 2 :(得分:0)
另一个迟到的条目。在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;