我一直在寻找这个,但是我不知道如何询问这个特定信息。
让我们想象一下我的sql表中有类似的内容。
Columns:
width : 10
height: 15
Depth: 6
我有一个这样的公式列
formula: (W*2)+H+D+3
在这里,我将W替换为Width,将H替换为Height,将D替换为depth。 使用sql Replace,我能够做到这一点并将最终结果转换为
(10*2)+15+6+3
问题是结果是我需要在该列中进行计算。
我在SQL中直接尝试了
select 1 as width ,
2 as height ,
3 as depth ,
'H*2+W' as formula,
replace(Replace(REPLACE('H*2+W','W',1),'H',2),'D',3) as result
我需要能够直接在查询中执行此操作,并使用其特定值计算每一行结果。
我尝试在Select内执行Execs,但是没有运气。如果我的初始查询有1000行,它将运行1000个查询...
我怎样才能做到最好呢?
答案 0 :(得分:-1)
您不能轻松地做自己想做的事。 SQL Server没有方便的解析机制来从字符串创建代码。您可以使用动态SQL和游标,但这很麻烦。
但是,您也许可以使用系数存储公式:
@FunctionTemplate(
name = "testing_udf",
scope = FunctionTemplate.FunctionScope.SIMPLE,
nulls = FunctionTemplate.NullHandling.INTERNAL
)
public class TestingFunction implements DrillSimpleFunc {
@Param
NullableFloat8Holder numberA;
@Param
NullableFloat8Holder numberB;
@Output
Float8Holder out;
public void setup() {
}
public void eval() {
// Whatever
}
}
那么您可以做:
formula w_coeff h_coeff d_coeff constant
(W*2)+H+D+3 2 1 1 3
'H*2+W' 1 2 0 0