【发布时间】:2016-05-20 15:43:08
【问题描述】:
如果我有一个包含文本的表格
create table my_table(
id integer primary key,
para text
);
我想选择包含特定字段的所有条目
SELECT * FROM my_table WHERE text LIKE '%searchtext%';
所以它会给我所有包含“searchtext”的字段。 postgresql 中是否有类似 contain(...) 的聚合函数/过程来做同样的事情。
SELECT * FROM my_table WHERE contains(text, 'searchtext');
我想要上述行为,因为我使用准备好的语句在 where 字符串中提供参数,例如WHERE text = ? 然后我提供参数代替?。
【问题讨论】:
-
where para like concat('%', ?, '%')应该可以工作 -
@a_horse_with_no_name 对不起。我应该提到这一点。出于安全原因,我正在使用准备好的语句。如果我会使用你的方法,即使这样,也有人可以传递类似
abc%' OR '%def(sql 注入)的东西。 -
?是 PreparedStatement 的参数。它不会受到 SQL 注入的攻击
标签: postgresql