拼接email

题目是这样的:

假设给你一个表 test(name, email)。有些记录email 为null,有些有值,现要求为没有值的记录分配一个email 格式为:

name@gmail.com

SQL> ed Wrote file afiedt.buf 1 CREATE TABLE testCursor ( 2 name varchar2(20), 3 email varchar2(40) 4* ) SQL> / Table created. SQL> @ insert.sql 1 row created. 1 row created. 1 row created. 1 row created. SQL> ed Wrote file afiedt.buf 1* SELECT * FROM testCursor SQL> / NAME EMAIL -------------------- ---------------------------------------- Ann Ben MaoWeiting MaoWeiting@gmail.com mingchaoyan mingchaoyan@gmail.com SQL> ed Wrote file afiedt.buf 1 UPDATE testCursor 2 SET email = name || '@gmail.com' 3* WHERE email is null SQL> / 2 rows updated. SQL> ed Wrote file afiedt.buf 1* SELECT * FROM testCursor SQL> / NAME EMAIL -------------------- ---------------------------------------- Ann Ann@gmail.com Ben Ben@gmail.com MaoWeiting MaoWeiting@gmail.com mingchaoyan mingchaoyan@gmail.com SQL> rollback 2 / Rollback complete. SQL> @ insert.sql 1 row created. 1 row created. 1 row created. 1 row created. SQL> ed Wrote file afiedt.buf 1 UPDATE testCursor 2 SET email = concat(name,'@gmail.com') 3* WHERE email is null SQL> / 2 rows updated. SQL> ed Wrote file afiedt.buf 1* SELECT * FROM testCursor SQL> / NAME EMAIL -------------------- ---------------------------------------- Ann Ann@gmail.com Ben Ben@gmail.com MaoWeiting MaoWeiting@gmail.com mingchaoyan mingchaoyan@gmail.com SQL> rollback 2 / Rollback complete. SQL> @ insert.sql 1 row created. 1 row created. 1 row created. 1 row created. SQL> ed Wrote file afiedt.buf 1 DECLARE 2 cursor mycursor is 3 SELECT * FROM testCursor 4 WHERE email is null 5 FOR UPDATE of email; 6 BEGIN 7 FOR r IN mycursor loop 8 UPDATE testCursor 9 SET email = name || '@gmail.com' 10 WHERE current of mycursor; 11 END loop; 12* END; SQL> / PL/SQL procedure successfully completed. SQL> ed Wrote file afiedt.buf 1* SELECT * FROM testCursor SQL> / NAME EMAIL -------------------- ---------------------------------------- Ann Ann@gmail.com Ben Ben@gmail.com MaoWeiting MaoWeiting@gmail.com mingchaoyan mingchaoyan@gmail.com SQL> spool off

其中insert.sql为

INSERT INTO testCursor VALUES('Ann',null); INSERT INTO testCursor VALUES('Ben',null); INSERT INTO testCursor VALUES('MaoWeiting','MaoWeiting@gmail.com'); INSERT INTO testCursor VALUES('mingchaoyan','mingchaoyan@gmail.com');

PS:蠢到家了,一个直接可以用update搞定的语句,硬是用了游标。

还是听听头脑清醒呀~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值