在postgresql - 9.5中执行格式查询中动态使用LIKE模式

时间:2016-09-01 08:04:34

标签: postgresql-9.5

我想动态地将footext插入到LIKE模式中,但它会出错

  

错误:无法识别的转换类型说明符“'”........

这是我的疑问:

   RETURN QUERY EXECUTE format ('SELECT foocolumn
             FROM footable  
                WHERE foocolumnother LIKE ''%L%''  ', footext);

3 个答案:

答案 0 :(得分:1)

如果您想在格式字符串中添加Stage,则需要将其加倍,例如fitColumns

%也会正确添加单引号,因此您无需将它们放入格式字符串中。

但是:使用%F%%会生成%L - 这是不正确的。

您需要将通配符添加到变量而不是格式字符串:

%F%%

答案 1 :(得分:1)

参加聚会的时间已经很晚了,但根据Erwin的answerdocument,您还可以尝试正则表达式的~字符。所以测试一下这个

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;