这看起来像是世界上最简单的事情,但我试图从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
答案 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