如何使用 slick 中的 like 运算符在多列中进行搜索?

How to search in multiple columns using the like operator in slick?

我想从数据库中获取用户名或电子邮件地址中包含单词 foo 的所有用户。 Slick 是怎么写的3.x?

select * from users where username like '%foo%' or email like '%foo%';

如果你已经定义了一个用户table,那么使用table用户的查询对象,你可以通过以下方式实现:

// select * from users where username like '%foo%' or email like '%foo%';
users.filter(e => e.username like '%foo%' || e.email like '%foo%').result

如果你运行上面的DBIOAction,那么你会得到预期的结果。

http://scala-slick.org/doc/3.3.1/queries.html#sorting-and-filtering

假设 query 是搜索字符串:这确实有效:

Users.filter(e => (e.username like s"%$query%") || (e.email like s"%$query%")).result

|| 运算符之间需要括号。