可以用以下2种方法:
sql(select=sqlColAlias(<arr1[0]>,"arr1_0"), from=t).eval() sql(select=sqlColAlias(makeCall(at, sqlCol("arr1"), 0), "arr1_0"), from=t).eval()
第一种用了元代码<arr1[0]>,第二种方法用makeCall调用at函数。
如下所示表t有一列arr1是array vector:
arr1=array(DOUBLE[], 0, 10).append!([2 3 4, 4 5 7, 7 9 10]) t = table(1..3 as id, arr1, rand(100, 3) as value)
用sql查询array vector列的第一个元素,即arr1[0],可以查询:
select arr1[0] from t
返回结果:
arr1_at 2 4 7
现在想用元编程的方式查询:
sql(select = sqlCol('arr1[0]') ,from =t).eval()
报错:
Server response: 'Unrecognized column name arr1[0]'