PLSQL实现数字反转时如何横向输出拼接后的完整反转结果
PLSQL数字反转单行输出实现方法
你当前代码输出多行的核心原因有两个:
- 循环内每次调用
DBMS_OUTPUT.PUT_LINE都会单独触发一次换行输出,自然会把每一位拆成独立行 - 你用来存取值的变量定义为
NUMBER类型,且子串截取长度参数设置错误,只是刚好逐位输出时碰巧拿到了单个数字,实际逻辑存在隐患,也无法保留反转后的前导0
可以按照以下思路修改:
- 把存储最终拼接结果的变量改为
VARCHAR2字符串类型,避免数字类型自动丢弃前导0的问题 - 去掉不必要的
DUAL表查询,PLSQL块内可以直接调用内置函数赋值,不需要绕路查虚表 - 循环中每次只截取数字的倒数第N位的单个字符,逐位拼接到结果字符串中
- 等所有位拼接完成后,仅调用一次
DBMS_OUTPUT.PUT_LINE输出最终结果,即可得到单行的反转值
修改后可直接运行的完整代码如下:
SET SERVEROUTPUT ON; DECLARE v_num NUMBER := 120; v_length NUMBER; v_reverse_str VARCHAR2(100); -- 字符串类型存储拼接结果,保留前导0 BEGIN v_length := LENGTH(v_num); FOR v_counter IN 1..v_length LOOP -- 每次取倒数第v_counter位的1个字符,拼接到结果串末尾 v_reverse_str := v_reverse_str || SUBSTR(v_num, -v_counter, 1); END LOOP; -- 拼接完成后一次性输出单行结果 DBMS_OUTPUT.PUT_LINE(v_reverse_str); END; /
运行上述代码后,会直接单行输出你需要的结果021。
内容的提问来源于stack exchange,提问作者kiric8494
相关产品推荐
相关产品推荐

