如何在slick中使用like操作符进行多列搜索?

问题描述 投票:0回答:1

我想从数据库中获取所有有字词的用户。foo 无论是在他们的用户名中还是在他们的电子邮件地址中。在Slick 3.x中是怎么写的?

select * from users where username like '%foo%' or email like '%foo%';
scala slick slick-3.0
1个回答
0
投票

如果你已经定义了一个用户表,那么使用user的tablequery对象,你可以通过下面的操作来实现。

// 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.orgdoc3.3.1queries.html#sorting-and-filtering(排序和过滤)


0
投票

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

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

在这两个字之间要加上括号 || 运营商。

© www.soinside.com 2019 - 2024. All rights reserved.