将数字与从2开始的反向位置相乘

时间:2017-10-06 17:26:39

标签: oracle loops plsql

我的要求很小。如何获得以下输出:

输入字符串为123456

我需要找到相反的位置,从2开始,即234567。 现在将每个值乘以反向位置值并添加。 例如:plsql中的1*7+2*6+3*5+4*4+5*3+6*2

1 个答案:

答案 0 :(得分:0)

docs

查询1

WITH data ( value, total ) AS (
  SELECT 123456, 0 FROM DUAL
UNION ALL
  SELECT TO_NUMBER( SUBSTR( value, 2 ) ),
         total + SUBSTR( value, 1, 1 ) * ( 1 + LENGTH( value ) )
  FROM   data
  WHERE  value IS NOT NULL
)
SELECT total FROM data WHERE value IS NULL

<强> SQL Fiddle

| TOTAL |
|-------|
|    77 |