首页 > 解决方案 > 基于动态替换查询中的占位符计算值

问题描述

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

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

到目前为止,我已经...

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

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

我现在如何得到这个计算的值?即在这种情况下,我会寻找号码1

我在http://sqlfiddle.com/#!9/8b7b3d/3创建了一个小提琴

标签: mysql

解决方案


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;

推荐阅读