【问题标题】:How to extract integer from list with tuple in Elixir?如何从 Elixir 中的元组列表中提取整数?
【发布时间】:2015-10-06 21:15:29
【问题描述】:

我正在尝试从 Elixir 中的 ODBC 数据库中获取计数。我可以看到我的结果回来了,但是,我不知道如何提取值。

{:ok, conn} = :odbc.connect('DSN=mydsn;UID=myuid;PWD=mypwd', [])
{:selected, _colNames, rows} = :odbc.sql_query(conn, 'select count(*) from mytable')

{:selected, ['COUNT'], [{'182'}]}

如何将 182 作为整数输出?

我得到的最接近的是获取内部元组:

hd(rows)

{'182'}

【问题讨论】:

标签: elixir


【解决方案1】:

根据您是对这个特定案例感兴趣还是对更广泛的方法感兴趣,有不同的可能解决方案。

在这个特定的实例中,由于rows 应该是一个具有单个值的单个元组的列表,您可以利用模式匹配来提取值。

{:selected, _, [{count}]} = {:selected, ['COUNT'], [{'182'}]}

从此count 将匹配'182'。但是,请注意'182' 与"182" 不同

"182" == '182'
false

正如 Elixir 文档中所述,'182' is a char-list 而"182" 是一个字符串。因此不能直接使用String.to_integer,否则会失败。

String.to_integer(count)
** (ArgumentError) argument error
    :erlang.binary_to_integer('182')

您首先需要使用List.to_integer(count) 或者将其转换为字符串,然后转换为整数。

List.to_integer(count)
182

String.to_integer(to_string(count))
182

如果元组包含多个值(这意味着查询返回多个值作为结果),此解决方案可能不直接适用。不过,这是您可以根据自己的需要进行调整的起点。

【讨论】:

  • 您可以使用List.to_integer(count)将其直接从列表转换为整数。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-06
  • 1970-01-01
  • 2018-04-07
相关资源
最近更新 更多