scala - 如何在 slick 中使用 sql """插值编写动态 SQL 查询

标签 scala slick

我是 Scala 和 Slick 的新手,并试图用 Slick 插值编写一个普通的 SQL 查询。

情况1:
我想要概括代码,以便将查询存储为常量。

例如:

val SQL_ALL_TABLE_METADATA: String = """SELECT DISTINCT table_name, column_name, data_type
                                            FROM information_schema.columns
                                                    WHERE table_schema = 'apollo' OR table_schema = 'dpa' ORDER BY table_name""";

并从常量创建普通查询,例如
var plainQuery = sql"""$SQL_ALL_TABLE_METADATA""".as[List[String]]

案例二:
替换查询的一部分

例如:从表 'table1' 中获取列 f_name 的信息
var column= "f_name"
var plainQuery = sql"""SELECT $column FROM table1""".as[String]

当我尝试上述情况时,它不起作用,因为查询似乎在编译时静态绑定(bind)。

请注意,现在我想使用纯 SQL 并在将来使用高级 Slick API。

最佳答案

情况1

为什么不简单地拥有这个?

val SQL_ALL_TABLE_METADATA: StaticQuery = sql"""SELECT DISTINCT table_name, column_name, data_type
                                            FROM information_schema.columns
                                                    WHERE table_schema = 'apollo' OR table_schema = 'dpa' ORDER BY table_name"""

var plainQuery = SQL_ALL_TABLE_METADATA.as[List[String]]

案例2

Use #$ instead of $
var column= "f_name"
var plainQuery = sql"""SELECT #$column FROM table1""".as[String]

关于scala - 如何在 slick 中使用 sql """插值编写动态 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27329185/

相关文章:

scala - 光滑的比较表列与空值

scala - 如何通过 Play 2/TypeSafe Activator 使用 Slick 连接到 Oracle 11g 数据库?

database - 使用 Play 2 和 Slick-Play 配置 Postgresql 连接

regex - 检查正则表达式模式匹配是否失败

scala - 在 Slick 交易中做自己的事情

database - Slick 3连接查询一对多关系

Scala 类型关键字 : how best to use it across multiple classes

algorithm - 学习编程技巧的优先顺序及其他建议

scala - 从请求中提取 Spray.io Content-Type?

scala - 灵活的查询过滤器作用于任意列