2012-06-15 10 views
11

永続的にLIKEクエリを実行したいと思います。私はsqliteを使用しています。イェソドブックはそれを行うには、生のSQLを使用した例を与えるが、こう述べています。バックエンド固有の演算子で永続化する例

あなたが原因バックエンド固有の を可能にする永続0.6で追加さ 機能に通常の構文で直接LIKE演算子を表現することができますオペレータ

私はそれの例を見つけることができませんでした。誰かが、selectListなどと同等のLIKEのような特定の演算子を使用することを意味すると思われる例がありますか?

ありがとうございます!

答えて

7

私はこれまでに使ったことがあると知っていますが、どこを覚えていないのですか。とにかく、簡単な例(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"] [] 
+1

おかげで、いくつかのヘルパー関数を作成することができます。あなたが恐れていたように、コードはコンパイルされませんでしたが、あなたはそれほど遠かったわけではありません:フィルタフィールド(Left $ T.concat ["%"、val、 "%"])(Filterは、PersistTextでもなくTextでもかまいません) –

+3

フィールドval = Filterフィールド(左$ T.concat ["%"、val、 "%"])(BackendSpecificFilter "like") ' –

関連する問題