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

Scala Slick中不区分大小写的字符串比较?,scala,orm,slick,Scala,Orm,Slick,找到一个用户匹配用户名的正确方法是什么 使用用户定义的用户类型: 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

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

使用用户定义的用户类型:

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
case类用户(userId:String,username:String)
对象用户扩展表[用户](“用户”){
def userId=列[String](“userId”,O.PrimaryKey)
def username=列[字符串](“用户名”)
def*=userId~authId~username(User.apply\ux,User.unapply\ux)
Database.forDataSource(DB.getDataSource())和session{
隐式会话:会话=>

val q=对于{uI,我有一个类似的情况,并使用
toLowerCase
扩展方法解决了这个问题:


p有趣的是,我试图在Slick下使用
.capitalize
方法来做一些类似的事情并均衡字符串,但是这不起作用,因为它只大写了我的
partyName
字符串,而不是
p.loginName
字符串。
.toLowerCase
似乎起到了作用!你应该注意,对于大型tabl这会变得非常低效,在某些情况下可能会妨碍索引的正确使用。我记得有一个特殊情况,这是最频繁的运行查询,整个事件对整个系统产生了巨大的影响。一些DB系统可能允许在函数应用程序上创建索引(例如:小写(
loginName
))但是在这个特殊的例子中,我必须在db
loginName_lowercase
中创建一个第二列,它保存了
loginName
的小写副本,并在查询中使用。这对性能产生了非常积极的影响。