簡體   English   中英

使用帶有 Scala 異常的正則表達式進行模式匹配

[英]Pattern matching using regex with Scala Anorm

我正在使用 Scala(2.11) 和 playframework(2.3) 並嘗試使用幫助程序 function 運行查詢,以通過模式匹配獲得結果。 function如下

def resultsfunc() = {

   val gradeRegex = "^Class 5\."
   val currRegex = "\.NCERT$"

   DB.withConnection{ implicit c =>
     val filterQuery = SQL(
      """
        select * from tbl_graphs
        where graph_name REGEXP '{grade_regex}' and
        graph_name REGEXP '{curr_regex}' and org_id = 4
      """)
      .on("grade_regex" -> gradeRegex,
          "curr_regex" -> currRegex)

    filterQuery().map{ graphRecord =>
        
        new ResultObj(graphRecord[Long]("id"),
                    graphRecord[String]("name"))

       }.toList
    }
}

我沒有收到任何錯誤,但即使有多個與模式匹配的記錄,我也會得到空結果。 如果我嘗試在 mysql 工作台中運行,並且當我嘗試打印filterQuery時,同樣的查詢也有效,arguments 也被正確映射。

是否應該在 Scala 異常中以不同方式執行與正則表達式的模式匹配?

它與 Anorm 完全沒有關系。

  1. 確保使用完全相同的數據和參數手動執行查詢,得到結果。
  2. 使用 JDBC 時(即使通過 Anorm),查詢語句中不得引用字符串參數( ... '{grade_regex}'... )。
  3. 長期以來,建議使用 Anorm 插值 ( SQL"SELECT x FROM y WHERE z = ${v}" ) 而不是SQL(..) function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM