如何对数组使用exto.Adapters.SQL.query?

如何对数组使用exto.Adapters.SQL.query?,sql,elixir,ecto,Sql,Elixir,Ecto,我尝试使用exto.Adapters.SQL.query,它可以正常工作,但不适用于数组。例如,此语句失败: Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)", [["title1", "title2"]] 错误: ** (ArgumentError) Postgrex expected a binary that can be encoded/cast to type "text"

我尝试使用
exto.Adapters.SQL.query
,它可以正常工作,但不适用于数组。例如,此语句失败:

Ecto.Adapters.SQL.query Repo, "SELECT p.* FROM posts p WHERE p.title in ($1)", 
  [["title1", "title2"]]
错误:

** (ArgumentError) Postgrex expected a binary that can be encoded/cast to
type "text", got ["title1", "title2"]. Please make sure the value you are
passing matches the definition in your table or in your query or convert
the value accordingly.
更新

没有简单的方法可以做到这一点,但这不是Ecto的限制,而是SQL数据库/PostgreSQL的限制


很难相信在2016年,SQL数据库仍然拥有如此基本的功能……

我认为这个问题的答案与您之前的问题几乎相同。只需使用中的
语法即可

更新

要为示例运行原始sql查询,可以使用以下命令:

Ecto.Adapters.SQL.query(MyApp.Repo, "SELECT p.* FROM POSTS p WHERE p.TITLE IN ($1, $2)", ["title1", "title2"])

我想这个问题的答案和你之前的问题差不多。只需使用中的
语法即可

更新

要为示例运行原始sql查询,可以使用以下命令:

Ecto.Adapters.SQL.query(MyApp.Repo, "SELECT p.* FROM POSTS p WHERE p.TITLE IN ($1, $2)", ["title1", "title2"])

如果你使用Postgres,你也可以使用


而Postgres生成的

如果您正在使用Postgres,您也可以使用


Postgres生成了

谢谢,是的,可以使用查询DSL,但仍然-执行原始SQL的能力似乎是SQL库的基础。我希望看到答案-如何做。但是如何将结果呈现到视图中,即如何使用
exto.Adapters.SQL.query(MyApp.Repo,…
?如何将结果传递给视图?谢谢。谢谢,是的,可以使用查询DSL,但仍然-执行原始SQL的能力似乎是SQL库的基础。我希望看到答案-如何做。但是如何将结果呈现到视图中,即如何使用
exto.Adapters.SQL.Query(MyApp.Repo,…
?如何将结果传递给视图?谢谢。