SQL Tutorial
SQL Clauses / Operators
SQL-Injection
SQL Functions
SQL Queries
PL/SQL
MySQL
SQL Server
Misc
Reversing a number in PL/SQL involves converting the number to a string, reversing the string, and then converting it back to a number. Here's a simple PL/SQL block to reverse a given number:
DECLARE original_num NUMBER := 12345; reversed_num NUMBER; reversed_str VARCHAR2(100); BEGIN -- Convert number to string reversed_str := TO_CHAR(original_num); -- Reverse the string FOR i IN REVERSE 1..LENGTH(reversed_str) LOOP reversed_str := SUBSTR(reversed_str, i, 1) || reversed_str; END LOOP; -- Convert the string back to a number after halving its length (since we've appended to it) reversed_str := SUBSTR(reversed_str, 1, LENGTH(reversed_str)/2); reversed_num := TO_NUMBER(reversed_str); DBMS_OUTPUT.PUT_LINE('Original Number: ' || original_num); DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
The above PL/SQL block initializes a number (original_num
), then reverses it, and finally prints out the original and reversed numbers. Adjust the original_num
value as needed.
This method uses string manipulation functions to achieve the reversal. If performance is a concern for very large numbers or datasets, more optimized methods could be developed.
PL/SQL program to reverse a number:
DECLARE num NUMBER := 12345; reversed_num NUMBER := 0; BEGIN WHILE num > 0 LOOP reversed_num := reversed_num * 10 + MOD(num, 10); num := TRUNC(num / 10); END LOOP; DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
Reverse digits of a number in PL/SQL:
DECLARE num NUMBER := 6789; reversed_num NUMBER := TO_NUMBER(REVERSE(TO_CHAR(num))); BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
How to write a PL/SQL function to reverse a number:
CREATE OR REPLACE FUNCTION reverse_number(p_num NUMBER) RETURN NUMBER IS v_reversed_num NUMBER := TO_NUMBER(REVERSE(TO_CHAR(p_num))); BEGIN RETURN v_reversed_num; END reverse_number; /
Reverse a number using a loop in PL/SQL:
DECLARE num NUMBER := 9876; reversed_num NUMBER := 0; BEGIN FOR i IN 1..LENGTH(TO_CHAR(num)) LOOP reversed_num := reversed_num * 10 + SUBSTR(TO_CHAR(num), i, 1); END LOOP; DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
PL/SQL procedure to reverse an integer:
CREATE OR REPLACE PROCEDURE reverse_integer(p_num IN OUT NUMBER) IS v_reversed_num NUMBER := 0; BEGIN WHILE p_num > 0 LOOP v_reversed_num := v_reversed_num * 10 + MOD(p_num, 10); p_num := TRUNC(p_num / 10); END LOOP; p_num := v_reversed_num; END reverse_integer; /
PL/SQL code for reversing a numeric value:
DECLARE num NUMBER := 54321; reversed_num NUMBER := TO_NUMBER(REVERSE(TO_CHAR(num))); BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
Oracle PL/SQL reverse number logic:
DECLARE num NUMBER := 45678; reversed_num NUMBER := 0; BEGIN WHILE num > 0 LOOP reversed_num := reversed_num * 10 + MOD(num, 10); num := TRUNC(num / 10); END LOOP; DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
Reverse order of digits in a PL/SQL program:
DECLARE num NUMBER := 987654; reversed_num NUMBER := TO_NUMBER(REGEXP_REPLACE(TO_CHAR(num), '(\d)(\d)', '\2\1')); BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
PL/SQL function for reversing digits:
CREATE OR REPLACE FUNCTION reverse_digits(p_num NUMBER) RETURN NUMBER IS v_reversed_num NUMBER := TO_NUMBER(REGEXP_REPLACE(TO_CHAR(p_num), '(\d)(\d)', '\2\1')); BEGIN RETURN v_reversed_num; END reverse_digits; /
Using REVERSE function in PL/SQL:
REVERSE
function to reverse a number in PL/SQL.DECLARE num NUMBER := 123456; reversed_num NUMBER := TO_NUMBER(REVERSE(TO_CHAR(num))); BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
Reverse a number without using additional variables in PL/SQL:
DECLARE num NUMBER := 876543; BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || TO_NUMBER(REGEXP_REPLACE(TO_CHAR(num), '(\d)(\d)', '\2\1'))); END; /
PL/SQL program to reverse a decimal number:
DECLARE num NUMBER := 123.45; integer_part NUMBER; decimal_part NUMBER; BEGIN integer_part := TO_NUMBER(REVERSE(TO_CHAR(TRUNC(num)))); decimal_part := TO_NUMBER(REVERSE(TO_CHAR(num - TRUNC(num)))); DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || TO_NUMBER(integer_part || '.' || decimal_part)); END; /
Reverse a number using recursion in PL/SQL:
DECLARE FUNCTION reverse_number(p_num NUMBER) RETURN NUMBER IS BEGIN IF p_num < 10 THEN RETURN p_num; ELSE RETURN MOD(p_num, 10) * POWER(10, FLOOR(LOG(10, p_num))) + reverse_number(TRUNC(p_num / 10)); END IF; END reverse_number; num NUMBER := 987654; reversed_num NUMBER := reverse_number(num); BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /
PL/SQL query to reverse a numeric string:
SELECT TO_NUMBER(REVERSE(TO_CHAR(12345))) AS reversed_number FROM dual;
Handling negative numbers when reversing in PL/SQL:
DECLARE num NUMBER := -98765; sign NUMBER := CASE WHEN num < 0 THEN -1 ELSE 1 END; reversed_num NUMBER := TO_NUMBER(REVERSE(TO_CHAR(ABS(num)))) * sign; BEGIN DBMS_OUTPUT.PUT_LINE('Reversed Number: ' || reversed_num); END; /