如何从MySQL ROW类型制作数组?

时间:2017-04-17 13:34:58

标签: mysql d variant

我正在使用mysql-native driver。我的代码:

ResultRange MySQLTablesRange = mysqlconnection.query(`SELECT historysensor FROM TableName`);
auto historysensor = MySQLTablesRange.array.filter!(a=>a[0].coerce!string.canFind("historysensor"));

但是在发送字符串中,我得到historysensor而不是数组,但结构如:Row([historysensor_10774], [false])。 因此,每次获得价值,我都需要做很多像:

foreach(sensor;historysensor)
{
    writeln(sensor[0].coerce!string.split("_")[1]);
}

如何将historysensor设为简单数组,以便能够在没有[0].coerce!string的情况下工作?

1 个答案:

答案 0 :(得分:1)

你可以在做其他事之前映射它

auto historysensor = MySQLTablesRange.array.
   map!(a => a[0].coerce!string). // this is new
   filter!(a.canFind("historysensor"). // no need for coerce here now
   array; // convert to plain array of strings

在这里使用filter BTW也可能是一个错误,让你的查询的一部分,以便数据库做到这一点,这可能会更有效,更容易阅读。