基于动态替换查询中的占位符来计算值



我有一个表,其中包含一个值类似(L*W*H)/6000的列serviceMaxFormula

当我运行查询时,我想用我知道的变量替换LWH

到目前为止我已经。。。

select 
serviceID, 
REPLACE(REPLACE(REPLACE(serviceMaxFormula,'H',30),'W',20),'L',10) as serviceMaxFormula
from carrier_services

这给了我(10*20*30)/6000serviceMaxFormula的值

我现在如何获得此计算的值?即,在这种情况下,我将查找编号1

我在http://sqlfiddle.com/#!9/8b7b3d/3

我只找到了一个选项-使用变量,
为此,你必须将公式从(L*W*H)/6000替换为(@L*@W*@H)/6000,所以现在你可以做这样的事情:

SET @L = 10;
SET @W = 20;
SET @H = 30;
SELECT (@L*@W*@H)/6000;

结果必须是:

+-----------------+
| (@L*@W*@H)/6000 |
+-----------------+
|          1.0000 |
+-----------------+
SELECT MAX(CASE WHEN servicemaxformula LIKE '%L%' THEN 10 ELSE 1 END)  
* MAX(CASE WHEN servicemaxformula LIKE '%W%' THEN 20 ELSE 1 END)  
* MAX(CASE WHEN servicemaxformula LIKE '%H%' THEN 30 ELSE 1 END)  
/ SUBSTRING_INDEX(servicemaxformula,'/',-1)+0 x
FROM carrier_services;

最新更新