我有一列存儲4個字符或更少的通配符(例如????
,',0??1
等)。對於像0??1
這樣的每一個這樣的字符串,我必須插入另一個表中的值0001到0991;對於字符串??01
,值將爲0001到9901;對於字符串????
,值將爲0000至9999,依此類推。如何使用字符串函數在PL/SQL中使用通配符來擴展字符串
我該如何使用PL/SQL和字符串函數來實現這個功能?
編輯
當前的代碼是:
declare
v_rule varchar2(50) := '????52132';
v_cc varchar2(50);
v_nat varchar2(50);
v_wild number;
n number;
begin
v_cc := substr(v_rule,1,4);
v_nat := substr(v_rule,5);
dbms_output.put_line (v_cc || ' '|| v_nat);
if instr(v_cc, '????') <> 0 then
v_wild := 4;
end if;
n := power(10,v_wild);
for i in 0 .. n - 1 loop
dbms_output.put_line(substr(lpad(to_char(i),v_wild,'0'),0,4));
end loop;
end;
/
真棒!它完美地解決了我的問題。感謝您的回覆,否則我會遇到困難的時間處理instring和substring :) – Arcs 2012-02-08 16:22:49
還有一件事我想問。 'some_table'有1000萬條記錄。假設每條記錄得到擴展,我將有大量記錄插入到some_other_table。我擔心這樣的程序的表現。有沒有有效的方法來處理這個問題? – Arcs 2012-02-10 13:45:32
@Arcs:如果你關心這種方法的性能,用1000個記錄對它進行測試,然後在10000或100000條記錄上測試它,或者甚至更多。我還沒有對這個功能進行任何性能測試,所以我不知道它的性能如何。如果你在'some_table'中有1000萬行,每個行可以產生100行,你就有10億行。插入10億行總是需要很長時間,不管你如何插入它們。 – 2012-02-10 20:29:26