举个例子一个表有5个列,都是VARCHAR(100)左右,给的数据是
5-2,5-3,5-5,Null,null
5-1,5-4,null,5-3,5-2
2行数据插入一张表,第一个数字5是列,第2个数字是代表有几个随机数,组成随机字符串,有可能是数字有可能是字母,随机生成出来,用逗号分割,请教下高手 ORACLE 如何实现,能够实现一定散分,谢谢。create teble temp(a1 varchar(100),a2 varchar(100),a3 varchar(100),a4 varchar(100),a5 varchar(100))想达到这样一个效果
insert into temp values('c,a','d,b,5','8,9,0,s,a',null,null);
insert into temp values('z,1','m,u,0,8',null,'l,p,o','y,t,');
5-2,5-3,5-5,Null,null
5-1,5-4,null,5-3,5-2
2行数据插入一张表,第一个数字5是列,第2个数字是代表有几个随机数,组成随机字符串,有可能是数字有可能是字母,随机生成出来,用逗号分割,请教下高手 ORACLE 如何实现,能够实现一定散分,谢谢。create teble temp(a1 varchar(100),a2 varchar(100),a3 varchar(100),a4 varchar(100),a5 varchar(100))想达到这样一个效果
insert into temp values('c,a','d,b,5','8,9,0,s,a',null,null);
insert into temp values('z,1','m,u,0,8',null,'l,p,o','y,t,');
create or replace function getRandomStr(v_col varchar2)
return varchar2
is
type v_var is table of varchar2(1) index by binary_integer;
v_v v_var;
v_c varchar2(2000):=''; --存储要输出的随机字符串
v_i int:=0;
v_cnt int:=0;
begin
if v_col is null then
return null;
end if;
--插入数字
for i in 1..10 loop
v_v(i):=to_char(i-1);
end loop;--插入大写字母A-Z
for i in 65..90 loop
v_v(i-54):=chr(i);
end loop;--插入小写字母a-z
for i in 97..122 loop
v_v(i-60):=chr(i);
end loop;v_cnt:=to_number(substr(v_col,3));
for i in 1..v_cnt loop
v_c:=v_c||v_v(floor(dbms_random.value(1,63)));
--索引表的下表从1到62floor(dbms_random.value(1,63))
end loop;
return v_c;
exception
when others then
dbms_output.put_line('have an exception');
end;
/
----------------------------------------------
M4
非常感谢sych888,有思路了。。