Có nhiều giải pháp khác nhau thể tùy thuộc cho dù bạn đang quan tâm đến trường hợp cụ thể hoặc theo cách tiếp cận rộng hơn.
Trong trường hợp cụ thể này, vì rows
được mong đợi là danh sách có một bộ đơn với một giá trị duy nhất, bạn có thể tận dụng lợi thế của mẫu phù hợp để trích xuất giá trị.
{:selected, _, [{count}]} = {:selected, ['COUNT'], [{'182'}]}
Từ thời điểm này count
sẽ khớp với '182'
. Tuy nhiên, xin lưu ý rằng '182'
khác với "182"
"182" == '182'
false
Như đã giải thích trong tài liệu Elixir, '182'
is a char-list trong khi "182"
là một String. Do đó bạn không thể sử dụng trực tiếp String.to_integer
vì nó sẽ không thành công.
String.to_integer(count)
** (ArgumentError) argument error
:erlang.binary_to_integer('182')
Trước tiên, bạn cần sử dụng List.to_integer(count)
hoặc cách khác chuyển đổi thành chuỗi, sau đó truyền đến một số nguyên.
List.to_integer(count)
182
String.to_integer(to_string(count))
182
Giải pháp này có thể không áp dụng trực tiếp nếu bộ chứa nhiều giá trị (có nghĩa là truy vấn trả về nhiều hơn một giá trị). Tuy nhiên đó là một điểm khởi đầu bạn có thể thích ứng với nhu cầu của bạn.
Nguồn
2015-10-05 23:11:43
Tôi không biết liệu nó có hiệu quả với những gì bạn cần nhưng bạn cũng có thể muốn xem Ecto: https://github.com/elixir-lang/ecto –