1

我刚开始使用 squeryl,对于如何编写这样的查询没有答案

SELECT ref label 
FROM x_table 
WHERE ref like x% or lable like x%

用户的价值在哪里x,特别是我还没有找到类似% squeryl 的登录或如何使用它。

我的版本:

val products = from(AppDB.productTable) (
    s => where ((s.label like value) or (s.ref like value))  select(s)
)

不正确。

val value : Option[String]我从用户那里得到。

4

2 回答 2

1

您可以尝试选择您的字段,如下所示:

val products = from(AppDB.productTable) (s => 
  where ((Some(s.label) like value) or (Some(s.ref) like value)) 
  select(s))

这将编译,因为查询会将 Option[String] 与 Option[String] 进行比较。Squeryl 将在内部处理选项状态。

如果您只是想将通配符添加到您要比较的内容中,假设 like 子句的两边都是 type Option[String],那么您可以这样做:

s.label like value.map(_ + "%")
于 2012-12-26T19:36:14.663 回答
0

您可以使用较短的版本:

AppDB.productTable.where ((s.label like value) or (s.ref like value))

和选项字段用于可为空的列

于 2012-12-28T10:46:48.257 回答