首页 > 解决方案 > 使用pl sql递归函数查找一串数字中所有数字的乘积

问题描述

  1. 使用递归函数找到由数字组成的字符串的所有数字的乘积,

  2. 所需的结构应如下所示。

    myfunction('3535') --> 225
    

标签: oracleplsql

解决方案


您可以使用:

CREATE FUNCTION product_of_digits(
  value IN VARCHAR2
) RETURN NUMBER DETERMINISTIC
IS
BEGIN
  -- https://stackoverflow.com/a/68282548/1509264
  -- License: CC BY-SA 4.0

  IF value IS NULL THEN
    RETURN NULL;
  ELSE
    RETURN TO_NUMBER(SUBSTR(value, 1, 1))
      * COALESCE(product_of_digits(SUBSTR(value, 2)), 1);
  END IF;
END;
/

然后:

BEGIN
  DBMS_OUTPUT.PUT_LINE(product_of_digits('3535'));
END;
/

输出:

225

db<>在这里摆弄


推荐阅读