A:
1)一维数组是只有一列且没有列标的数组,比如 array(1,2,3,4),在使用TS-SQL方式取数据时,列用thisrow表示。比如
//取出a数组中小于等于3的值
a:=array(1,2,3,4,5);
//用sselect取出的结果仍为一维数组
return sselect thisrow from a where thisrow<=3 end;
直接取某行值时,只需指定行,不需指定列。比如取第3行的数据(数组的自然行下标从0开始,第3行对应的行标是2),用a[2]。
一维数组转化为二维数组,可以用select的方式,也可以用转置的方式:
//用select的方式,需用as给出列名,否则默认列名为"Expr1"
a:=array(1,2,3,4,5);
return select thisrow as 'data' from a end;
//用转置的方式,列名默认为0,如果要修改列名,可用select方式或reindex等方式。
a:=array(1,2,3,4,5);
return `a;
2)二维数组有一列或多列,每列有列标。在使用TS-SQL方式取数据时,需指定列名,或用*表示取所有列。如:
//取数组r中data列小于等于3的所有数据
r:=array(("time":20170201T,"data":1),
("time":20170202T,"data":2),
("time":20170203T,"data":3),
("time":20170204T,"data":4),
("time":20170205T,"data":5));
return select * from r where ['data']<=3 end;
直接用数组的方式取指定行指定列时,需指定行列名,如r[2]['data']。
从二维数组取一维数组时,可以用sselect的方式,或直接用数组符号的方式。比如:
//用sselect的方式取data列的数据
r:=array(("time":20170201T,"data":1),
("time":20170202T,"data":2),
("time":20170203T,"data":3),
("time":20170204T,"data":4),
("time":20170205T,"data":5));
return sselect ['data'] from r end;
//用数组符号的方式取data列数据
r:=array(("time":20170201T,"data":1),
("time":20170202T,"data":2),
("time":20170203T,"data":3),
("time":20170204T,"data":4),
("time":20170205T,"data":5));
return r[:,'data'];