如何查询给定数字中所有数字的总和?

Giu*_*oli 5 sql oracle

我可以查询给定数值中所有数字的总和吗?

输入值示例:

  EMPNO 
  -----  
  7369
Run Code Online (Sandbox Code Playgroud)

我希望得到这个结果:

 7+3+6+9 = 25
Run Code Online (Sandbox Code Playgroud)

我考虑过这个解决方案,但我觉得它没有效率:

SELECT SUBSTR('12345',1,1) + SUBSTR('12345',2,1)
FROM DUAL;
Run Code Online (Sandbox Code Playgroud)

小智 3

这是解决方案:

1. 简单查询

SELECT id,sum(SUBSTR(empno, LEVEL, 1 )) sums
FROM   (select 1 as id, 7369 as empno from DUAL)
      CONNECT BY LEVEL <= LENGTH(empno)
group by id
Run Code Online (Sandbox Code Playgroud)

2. 使用交叉连接

SELECT sum(column_value)
FROM   (
  SELECT 7369 val,
         ROWNUM AS id
  FROM dual
) t
CROSS JOIN
TABLE(
  CAST(
    MULTISET(
      SELECT SUBSTR( t.val, LEVEL, 1 )
      FROM   DUAL
      CONNECT BY LEVEL <= LENGTH( t.val )
    )
    AS SYS.ODCIVARCHAR2LIST
  )
) c
Run Code Online (Sandbox Code Playgroud)

输出:

SUM(COLUMN_VALUE)
25
Run Code Online (Sandbox Code Playgroud)