3
Slickで列がヌルでない場合はフェッチするクエリを作成し、nullの場合は別の列の値が既定値になります。 db.runへの呼び出しを繰り返さずに、どうすればいいですか?あなたのテーブル定義を想定しSlick 3.xでフォールバックを使用してオプションの列値を照会する方法
Slickで列がヌルでない場合はフェッチするクエリを作成し、nullの場合は別の列の値が既定値になります。 db.runへの呼び出しを繰り返さずに、どうすればいいですか?あなたのテーブル定義を想定しSlick 3.xでフォールバックを使用してオプションの列値を照会する方法
はこのようなものになります:first_col
内のすべてのNULL値がsecond_col
からの値に置き換えられます
val query = TableQuery[EmployeesTable].map(employee => employee.firstCol.ifNull(employee.secondCol))
val result: Future[Seq[Int]] = db.run(query.result)
この方法は:
import slick.driver.PostgresDriver.api._ // Import your driver here
class EmployeesTable(tag: Tag) extends Table[(Option[Int], Int)](tag, "employees") {
def firstCol = column[Option[Int]]("first_col") // This column is nullable
def secondCol = column[Int]("second_col") // This column is non-nullable
def * = (firstCol, secondCol)
}
を次に、あなたのクエリは次のようになります。 。これは、次のSQLクエリと同等です:
select coalesce("first_col", "second_col") from "employees"
これは実際に私の問題を解決しませんでしたが、元の質問に雄弁に答えていますので、助けてくれてありがとうございました。 –
どのように表示されますか?ヌル可能な 'first_col'といくつかのヌル可能な' second_col'を持っていて、 'first_col'のクエリ中にすべてのヌル値が' second_col'からのものに置き換えられなければならないのでしょうか? –
はい、それはまさに私が意味することです、ありがとう。 –
どのバージョンのSlickをお使いですか?それはSlick 2.xかSlick 3.xですか? –