jOOQ:如何查看已别名的字段?
Posted
技术标签:
【中文标题】jOOQ:如何查看已别名的字段?【英文标题】:jOOQ: how can I view a field which has been aliased? 【发布时间】:2015-06-06 13:55:00 【问题描述】:我一直在玩 jOOQ(在 Scala 中),希望能回答(看似简单的)问题:如何查看已别名的字段?
希望下面的例子能说明我的问题:
import org.jooq.impl._
import org.jooq.impl.DSL._
val a = field("a", SQLDataType.DOUBLE)
val b = a.as("b")
// prints "b"
println(b)
// however, I would like it to print a "b" as in
select(b)
编辑:
我发现@Lukas Eder 提供的答案不起作用的情况。以下案例的修改答案将不胜感激(欢呼):
val f = field("amount", SQLDataType.DOUBLE)
val p = field("partition", SQLDataType.INTEGER)
val o = field("order_by", SQLDataType.DATE)
// prints as expected
val r = coalesce(sum(f).over().partitionBy(p).orderBy(o), 0)
// coalesce(
// sum(amount) over (partition by partition order by order_by asc),
// 0)
val a = r.as("test")
// question mark instead of 0
println(
DSL.using(SQLDialect.POSTGRES)
.renderContext()
.declareFields(true)
.render(a)
)
// coalesce(sum(amount) over (partition by partition order by order_by asc), ?) as "test"
【问题讨论】:
【参考方案1】:为别名字段生成 SQL 的“正常”方式就是您所看到的方式。引用字段的方式,例如当放入ORDER BY
子句时。
为别名字段生成 SQL 的“例外”方式是将其放在 SELECT
子句中,即当它声明自己时。
所有QueryPart.toString()
实现都会生成“正常”的SQL 字符串。如果你明确地想要在SELECT
子句中生成字段声明,你可以直接使用jOOQ's rendering API:
println(
DSL.using(SQLDialect.ORACLE)
.renderContext()
.declareFields(true)
.render(b)
)
【讨论】:
谢谢卢卡斯 - 非常有帮助:)以上是关于jOOQ:如何查看已别名的字段?的主要内容,如果未能解决你的问题,请参考以下文章