通过to_char(to_date(logintime,'yy-mm-dd'),'yyyy-mm-dd')试试可不可转换,没环境没法试,不行的话用instr函数,一句update就行了,不过我现在没时间写代码,给你个思路
instr((logintime,'-',1)可以取出第一个-的位置,然后通过substr(logintime,1,instr((logintime,'-',1)-1)取出第一个-前面的部分,就是年,20||就行了,然后再用instr(logintime,'-',2)
--这个是第2个-的位置,知道第1、2个-的位置后还是通过substr取出第1个-和第2个-之间的字符,就是月,case when一下如果是1位就补个0,。。。。依次类推,麻烦是麻烦点,但是比较通用,能适应各种情况,不过日期的话应该有规律,应该能根据规律简化不少,你自己琢磨吧.
如果你非要用循环可通过rowid这个伪列,即定义一个参数做计数用,循环一次加1,直到等于max(rowid)为止,不过我实在想不出用循环怎么弄,期待高手。。。
$ sqlplus '/as sysdba' #我是用的spfile启动的,spfile文件不能修改,所以要做这一步。 SQL>create pfile from spfile #关闭数据库。 SQL>shutdown immediate #cp控制文件到目标位置。 SQL>cp /opt/oracle/oradata/control* /opt/oracle/oratest/ 修改$ORACLE_HOME/dbs/init$ORACLE_SID.ora 文件中的控制文件的位置。 #启动数据库指定参数文件。 SQL>startup pfile='/opt/oracle/product/9.2.0.4/dbs/init$ORACLE_SID.ora' #下次启动数据库是直接就可以用startup启动了。 SQL>create spfile from pfileINSERT INTO tableSELECT 'aaa' || ROWNUM, 'aaa' FROM DUAL CONNECT BY ROWNUM <= 100
其中 100是你想插入的记录条数
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)