2014-04-14 20 views
0

我试图从一个mySQL查询中返回一组字符串值。然后用'/'字符分隔它们(它们都包含在内)。最后将'/'字符前的值除以后面的值。细分字符串并使用子字符串作为分数组件

我已经试过将底层作为一个INT和几个DECIMAL变体。任何帮助感激地接受。

 " 
     CAST(
      CAST(
       SUBSTRING(
        customerfeedback.total_score, 
        0, LOCATE('/', table.column_a-1) 
       )AS DECIMAL(6,3) 
      ) 
      /
      CAST(
       SUBSTRING(
        customerfeedback.total_score, 
        LOCATE('/', table.column_a+1), LENGTH(table.column_a) 
       )AS DECIMAL(6,3) 
      ) 
      AS DECIMAL(6,3) 
     ) 
     " 

回答

0

使用substring_index提取分子和分母部分,并在分工中使用它们。

select 
    @str:='225/12', 
    @n:=substring_index(@str, '/', 1) numerator, 
    @d:=substring_index(@str, '/', -1) denominator, 
    @n/@d quotient; 

上述例子的结果:

+----------------+-----------+-------------+----------+ 
| @str:='225/12' | numerator | denominator | quotient | 
+----------------+-----------+-------------+----------+ 
| 225/12   | 225  | 12   | 18.75 | 
+----------------+-----------+-------------+----------+ 

您可以根据需要浇铸或圆形的商的。