【问题标题】:How to search in multiple columns using the like operator in slick?如何在 slick 中使用 like 运算符在多个列中搜索?
【发布时间】:2020-09-21 13:41:33
【问题描述】:

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

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

【问题讨论】:

    标签: scala slick slick-3.0


    【解决方案1】:

    如果你已经定义了一个用户表,那么使用用户的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.org/doc/3.3.1/queries.html#sorting-and-filtering

    【讨论】:

    • 这是为你编译的吗?我使用(并且之前已经尝试过)Users.filter(e => e.username like "%foo%" || e.email like "%foo%").result,但这也无法编译。
    • 您可能缺少import slick.jdbc.MySQLProfile.api._,请查看medium.com/@kennajenifer1234/…
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2021-12-11
      • 2021-03-01
      • 2013-01-19
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-27
      • 1970-01-01
      相关资源
      最近更新 更多