首先,我是这里的Erlang新秀。我需要与MySQL数据库交互,并且找到了erlang-mysql-driver。我正在尝试,对某些语法有些困惑。

我可以从数据库中获取一行数据(为简便起见,这里大大简化了):

Result = mysql:fetch(P1, ["SELECT column1, column2 FROM table1 WHERE column2='", Key, "'"]),
case Result of
    {data, Data} ->
        case mysql:get_result_rows(Data) of
            [] -> not_found;
            Res ->
              %% Now 'Res' has the row


现在,这里是`Res'具有的示例:

[[<<"value from column1">>, <<"value from column2">>]]


我知道这是记录列表。在这种情况下,查询返回1行2列。

我的问题是:
<<>>符号是什么意思?将这样的列表转换为我定义的记录的最佳(推荐的)语法是什么:

-record(
    my_record,
    {
      column1 = ""
      ,column2 = ""
    }
 ).

最佳答案

请注意:结果不是每次看到的位字符串理解,而是位字符串。但是,您可以使用位字符串理解来生成位字符串序列(上面已在生成器中对此进行了描述),非常类似于列表和列表理解。

您可以使用erlang:binary_to_list / 1和erlang:list_to_binary / 1在二进制和字符串(列表)之间进行转换。

mysql驱动程序返回位字符串的原因可能是因为它们处理起来要快得多。

关于erlang - Erlang中的<<和>>符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1215922/

10-17 01:24