所在位置:主页 > 数据处理 > PL/SQL 一行数据转换成多行记录

PL/SQL 一行数据转换成多行记录

发布时间:2023-12-09 04:24来源:www.sf1369.com作者:宇宇

一、PL/SQL 一行数据转换成多行记录

不能这样写,

CREATE OR REPLACE type char_table_type is table of varchar2(255);

SELECT *

FROM TABLE (char_table_type ('a1','a2','a3'));

二、plsql多行的数据变成一行多列的形式显示

用case when可以吧,case when ID='01' then money as 字段名

when ···

三、oracle plsql 如何into多条记录

insert into TABLE1

(a, b, c, d)

select id1,id2,id3,id4

from TABLE2; 要是数据很多的话

写在存储过程中,在java代码中直接调用这个存储过程,存储过程中分成两次做提交,每次分成50万提交一次,用游标记住第一提交的索引,然后第二次就从该索引处全部提交完,这样只需要几分钟就搞定,之前有个项目业是遇到这样的情况,就是这样处理的。

四、sql server怎么把多行数据合并成一行

group by 前面相同的字段,后面不同的,用max取。

SELECT m.member_id,

prefix_desc 'Prefix:',

UPPER(first_name) 'First Name:',

UPPER(last_name) 'Last Name:',

UPPER(email) 'Email:',

LOWER(user_id) 'User ID:',

REPLICATE('*',LEN(password)) 'Password:',

('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',

REPLACE(email_ind,'Y','Accept') 'Email notification:',

REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN',

max(CASE WHEN tel_type= 'B' THEN tel_number END + ' '+REPLACE(pref_phone_ind,'P','PREF')) 'Business Phone',

max('('+ p.country_code + ')'+ CASE WHEN tel_type= 'M' THEN tel_number END) 'Mobile Number',

max(CASE WHEN tel_type= 'F' THEN tel_number END) 'Fax'

FROM MEMBER m, license l, phone_fax p

WHERE m.member_id = l.member_id

AND m.member_id = p.member_id

AND m.member_id = 'A000001'

group by

m.member_id,

prefix_desc 'Prefix:',

UPPER(first_name) 'First Name:',

UPPER(last_name) 'Last Name:',

UPPER(email) 'Email:',

LOWER(user_id) 'User ID:',

REPLICATE('*',LEN(password)) 'Password:',

('****'+SUBSTRING(license_no,5,4)) 'Drivers Licese Number:',

REPLACE(email_ind,'Y','Accept') 'Email notification:',

REPLACE(return_ind,'Y','Accept') 'HERIZ E-RETURN'

五、SQL一行多列数据分解成多行数据

SELECT 省份, 编号, 姓名, 手机1 FROM 表

UNION ALL

SELECT 省份, 编号, 姓名, 手机2 AS 手机1 FROM 表

UNION ALL

SELECT 省份, 编号, 姓名, 手机3 AS 手机1 FROM 表

注: 上面的查询, 没有作排序的处理。

六、Oracle中使用PL/SQL怎样用循环插入多条数据?

使用loop循环,比如:

for item in (select a,b,c from table_a where 条件) loop

insert into table_b(a,b,c) values (item.a,item.b,item.c);

end loop;

也可以使用索引表循环,以上只是一个简单的例子,需要根据你的具体情况选择循环方式。

1、采用insert into values 语句插入一条,写很多条语句即可多条数据,这种主要针对于离散值以及一些基础信息的录入,如:insert into test(xh,mc) values('123','测试');

如果插入的数据有规律,可利用for、loop循环插入,主要用于批量生成测试数据

begin

for i in 1 .. 100 loop

insert into test(xh,mc) values(i||'','测试');

end loop;

end ;。

2、采用insert into selct from 语句来一次性插入一个集合,这种主要依据于要插入的数据源已经存储于数据库对象中,或者利用dual虚表来构造数据,经过加工后写入一个集合。

insert into test (xh,mx) select '123','测试' from dual;

3、采用plsql等工具、或者oracle的imp、impdp命令来导入,这种主要用数据库与数据库之间的大批量数据导入,导入的数据格式为plsql的pde、oracle的dmp等。dmp文件可使用

table_exists_action参数控制导入动作:replace替换原表,truncate清除原表数据再导入,append增量导入数据,当然impdp数据泵的导入要依赖于directory路径。

impdp 用户名/密码 dumpfile=123.dmp logfile=123.log directory=imp_dir tables=test table_exists_action=append。

4、使用excel文件直接拷贝。这种主要用于要写入的数据已是excel文件或者行列分明的其它格式文件,每一列的值和表结构相对应,可直接打开表的行级锁,把数据拷贝进入。