Slick中不区分大小写的字符串比较?

时间:2013-05-22 19:46:02

标签: scala orm slick

找到一个用户匹配用户名的正确方法是什么?

使用用户定义的类型User:

case class User (userId: String, username: String)

object User extends Table[User]("user") {
  def userId = column[String]("userId", O.PrimaryKey)
  def username = column[String]("username")
  def * = userId ~ authId ~ username <>(User.apply _, User.unapply _)

  Database.forDataSource(DB.getDataSource()) withSession {
    implicit session: Session =>

    val q = for { u <- User if u.username.equalsIgnoreCase(someUsername) }
      yield u
    q.headOption

user.username的类型为Column [String],它没有转换为String。

所需要的是让数据库作为查询的一部分进行字符串不敏感的比较。

1 个答案:

答案 0 :(得分:19)

我有类似的情况并使用toLowerCase扩展方法解决了这个问题:

p <- u.party if p.loginName.toLowerCase === partyName.toLowerCase

您可以找到here个更多扩展方法,尤其是String ones