1.今天同事遇到一个问题,Oracle数据库,用insert...select从老表中往新表中新增数据时,新表的ID不是自增的,需要在sql语句中生成一个NUMBER(20,0)的ID.
insert into table1 (RULE_ID,RULE_CODE,RULE_NAME ) SELECT t2.RULE_ID t2.RULE_CODE,t2.RULE_NAME from table2 t2
2.因为table2表中的RULE_ID为字符串,而table1中的RULE_ID为NUMBER(20,0),字符串转换不成数字,所以需要重新生成ID
insert into table1 (RULE_ID,RULE_CODE,RULE_NAME ) SELECT lpad(rownum,20,0) t2.RULE_CODE,t2.RULE_NAME from table2 t2
3.扩展
lpad(rownum,20,0)这个函数会生成数字;
'ID'||lpad(rownum,20,0)前面加个'ID'可以生成字符串'ID0001'。