12

我想持久地做一个 LIKE 查询,我正在使用 sqlite。yesod 书提供了一个使用原始 SQL 执行此操作的示例,但说:

由于 Persistent 0.6 中添加了一项功能,您可以直接用普通语法表达 LIKE 运算符,该功能允许后端特定的运算符

不过,我找不到这样的例子。有人可以举一个例子来说明使用像 LIKE 这样的特定运算符selectList或类似的东西意味着什么?

谢谢!

4

1 回答 1

9

我知道我以前用过它,但我不记得在哪里。无论如何,一个简单的例子(未经 GHC 检查,道歉)将是:

selectList [Filter PersonName (Left $ PersistText "%Michael%") (BackendSpecificFilter "ILIKE")] []

显然你可以创建一些辅助函数,例如:

icontains field val = Filter field (Left $ PersistText $ T.concat ["%", val, "%"]) (BackendSpecificFilter "ILIKE")
selectList [Personname `icontains` "Michael"] []
于 2012-06-17T07:33:30.807 回答