Sql 在db中的多个列上进行模式匹配

Sql 在db中的多个列上进行模式匹配,sql,scala,playframework,pattern-matching,anorm,Sql,Scala,Playframework,Pattern Matching,Anorm,我在Play 2.2应用程序中对db进行了以下sql查询: SQL("SELECT t.id, t.field1, t.field2 from table1 t WHERE t.field1 = {param1}") .on("param1" -> param1)() .map { case ??? }.toList 此请求可以返回: 没有记录 记录但field2为NULL field2为非空的记录 我如何处理这些案件?我只知道如何处理单个列: //..

我在Play 2.2应用程序中对db进行了以下sql查询:

SQL("SELECT t.id, t.field1, t.field2 from table1 t WHERE t.field1 = {param1}")
   .on("param1" -> param1)()
   .map {
       case ???
    }.toList
此请求可以返回:

  • 没有记录
  • 记录但
    field2
    NULL
  • field2
    非空的记录
  • 我如何处理这些案件?我只知道如何处理单个列:

    //...
    .map {
      case Row(field1: Option[String]) => field1
     }.toList
    

    使用行解析器,如下所示:

    例如:

    val results: List[(Int, Int, String)] = 
      SQL("SELECT t.id, t.field1, t.field2 from table1 t WHERE t.field1 = {param1}")
        .on("param1" -> param1)()
        .as(int("t.id") ~ int("t.field1") ~ get[Option[String]]("t.field2") map(flatten) *)
        .toList 
    

    一个问题:当根本没有记录时,如何处理这个案例?你应该得到一个空列表。