如何使用字符串转化为元编码进行计算

请教个问题,假设表 dt_C 中有一列的列名是 C_53。现在想通过 sql 命令动态生成查询语句。现在用下列方法是可以的:

sql(select=sqlColAlias(<sum(c_53)>,"c53sum"),from =t).eval() //可以正常计算

但用下列方法时会报错:

i='5'
j='3'
sql(select=sqlColAlias(<"sum(c_"+i+j+")">,"c53sum"),from =t).eval()//报错:Incompatible type.Expected:DOUBLE,Actual:STRING

请问有没有办法在其中使用字符串转化为元编码进行计算?

请先 登录 后评论

1 个回答

wale

一种方法是使用parseExpr函数,如下所示:

sql(select=sqlColAlias(parseExpr("sum(c_"+i+j+")"),"c53sum"),from =t).eval()

另一种方法是使用sqlCol函数,如下所示:

sql(select =sqlCol("c_"+i+j,sum,"c53sum"),from=t).eval()

第2种方法比较简洁,因此不建议使用parseExpr,而且遇上一些复杂的case,譬如函数的参数是一个函数名称,parseExpr可能不知道是字段名称,还是函数名称,从而不能正确的handle,当然一般情况下,parseExpr是没问题的。

请先 登录 后评论