1

چگونه تابعی بنویسیم که اعداد را از یک رشته‌ جدا کند و بازگرداند؟

تعداد بازدید
102
زمان مطالعه
1 دقیقه
بـروز رسانـی
1402/06/31
پرینت مقاله
اشتراک گذاری

می‌خواهیم برنامه‌ای بنویسیم که اعداد را از یک ورودی رشته ای جدا کرده و خروجی‌های زیر را بازگرداند

select get_number(p_input_char => ‘amir5REZA6ALI7.MOHAMMAD4’) from dual; ====> 567.4

select get_number(p_input_char => ‘علی5 رضا 6 محمد 7’) from dual; ====> 567

برای انجام این کار باید از برنامه زیر استفاده کنیم

create or replace function get_number(p_input_char varchar2) return varchar2
deterministic as

v_len number;
v_asci number;
v_tmp clob;
v_result clob;
begin

if p_input_char is null then
return null;
end if;

select length(min(p_input_char)) into v_len from dual;

for i in 0 .. v_len loop
select substr(p_input_char, i, 1) into v_tmp from dual;
select ascii(v_tmp) into v_asci from dual;

if (v_asci >= 48 and v_asci <= 57) or v_asci = 46 then
v_result := v_result || v_tmp;
end if;

end loop;
return v_result;
end;

در برنامه فوق پارامتر p_input_char ورودی تابع است که حاوی مقادیر رشته‌ای و عددی است توجه دوستان را به این نکته جلب می‌کنم که در ورودی تابع فوق کاراکتر نقطه(.) به عنوان نقطه اعشار در نظر گرفته شده است

موفق و پیروز باشید

علی ابراهیمی فرد

دیدگاهتان را بنویسید

آیا این مقاله مفید بود؟

از ۱ تا ۵ چه امتیازی می‌دهید؟

میانگین امتیاز از رای

اولین نفر باشید که رای میدهد!

تماس با پشتیبانی
فرداوراکل
این فیلد برای اعتبار سنجی است و باید بدون تغییر باقی بماند .