Elixir / Ecto / Postgres尝试从查询中获取整数但是获取char列表?

时间:2017-05-26 17:59:22

标签: elixir ecto

这看起来像是世界上最简单的事情,但我试图从ecto查询中返回一个整数:

iex(10)> num = Polo.Repo.all(from n in Polo.Account.Number, select: max(n.account))
[debug] QUERY OK source="account_numbers" db=3.0ms queue=0.1ms
SELECT max(a0."account") FROM "account_numbers" AS a0 []
[7024184]

iex(11)> IO.inspect(num)
[7024184]
[7024184]

iex(12)> IO.puts(num)
** (ArgumentError) argument error
   (stdlib) :io.put_chars(:standard_io, :unicode, [[7024184], 10])

iex(12)> num + 1
** (ArithmeticError) bad argument in arithmetic expression
    :erlang.+([7024184], 1)

正确的数字实际上是7024184,但由于某种原因,它不会以整数形式返回。它似乎是一个char列表。

非常感谢任何帮助!

运行最新的Elixir 1.4.4

1 个答案:

答案 0 :(得分:0)

Repo.all始终返回一个列表。由于您正在选择一个整数,因此您将返回一个整数列表。

如果您只想获得一个值,可以使用Repo.one

num = Polo.Repo.one(from n in Polo.Account.Number, select: max(n.account))
# num should be just the integer `7024184` now