首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Anorm中使用‘Option[BigDecimal]’?

在Anorm中使用‘Option[BigDecimal]’?
EN

Stack Overflow用户
提问于 2016-11-08 14:09:46
回答 1查看 467关注 0票数 1

给予:

build.sbt

代码语言:javascript
复制
$cat build.sbt
scalaVersion := "2.11.8"

libraryDependencies += "com.typesafe.play" % "anorm_2.11" % "2.5.1"

REPL

代码语言:javascript
复制
import anorm._

val x: Option[BigDecimal] = Some(42)
val none: Option[BigDecimal] = None

// invoke Oracle function `f`
scala> SQL""" select f(#$x) from dual """.sql.statement
res0: String = " select f(Some(42)) from dual "

scala> SQL""" select f(#$none) from dual """.sql.statement
res1: String = " select f(None) from dual "

我希望res0 = equal:select f(42) from dual,而res1希望等于select f(NULL) from dual

我如何修改我的SQL代码以适应我想要的结果?

我导入了anorm._,每个https://stackoverflow.com/a/22531320/409976,但是它没有给出我想要的结果。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-08 17:14:53

使用$插值,只需使用SQL""" select f($x) from dual """

您可以使用#$来实现它,但是您当然不应该这样做(只有当您不能用$做您想做的事情时,才应该使用#$:例如,用于插值表或列名):

代码语言:javascript
复制
def invokeF(x: Option[BigDecimal]) = {
  val xInSql = x.fold("NULL")(_.toString) // can be inlined to get even less readable
  SQL""" select f(#$xInSql) from dual """
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40489039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档