1
は、SQLフラグメントを実行しようとすると:Ecto SQL Fragmentが失敗します、なぜですか?
Repo.all from p in Posts, where: fragment("lower(?) in ?", p.title, ^["some-title"])
しかし、それは失敗し、それは次のSQLとエラーが発生します。
SELECT p0."title" FROM "posts" AS p0 WHERE (lower(p0."title") in $1) [["some-title"]]
** (Postgrex.Error) ERROR (syntax_error): syntax error at or near "$1"
UPDATE:臨床試験の多くの後
のでSOLUTION、I使用方法を理解しました:
Repo.all from p in Posts, where: fragment("lower(?)", p.title) in ^["some-title"])
まだ - 元の表現がうまくいかなかったのはなぜですか?それはまったく有効であるようだ。
UPDATE
There should be parentheses after
in
私はどちらかの作品はなかった、それを試してみました:はい、行くための正しい方法がある)
Repo.all from p in Posts, where: fragment("lower(?) in (?)", p.title, ^["some-title"])
** (ArgumentError) Postgrex expected a binary that can be encoded/cast to type "text", got ["some-title"]. Please make sure the value you are passing matches the definition in your table or in your query or convert the value accordingly.
in' 'の後に括弧があるはず それはのようなものを生成します。 –