我刚刚开始使用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]
我来自用户。
答案 0 :(得分: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子句的两边都是Option[String]
类型,那么您可以这样做:
s.label like value.map(_ + "%")
答案 1 :(得分:0)
您可以使用更短的版本:
AppDB.productTable.where ((s.label like value) or (s.ref like value))
和选项字段用于可为空的列