Oracle删除字段中的空格、回车及指定字符的实例代码

作者:袖梨 2022-06-29

 

 代码如下复制代码

createorreplaceprocedurePROC_testis

 --Description:删除字段中的指定字符(回车chr(13)、换行chr(10))

 --By LiChao

 --Date:2016-03-01

 colnamevarchar(20);--列名

 cnt   number;--包含换行符的列的行数

 v_sql varchar(2000);--动态SQL变量

begin

 --读取表中的列

 forcolin(selectcolumn_name

        fromuser_tab_columns

        wheretable_name ='TEMP') loop

  colname := col.column_name;

  --替换换行符chr(10)

  v_sql :='select count(1) from temp where instr('|| colname ||

       ',chr(10))>0 '

  EXECUTEIMMEDIATE V_SQL

   intocnt;

  if cnt > 0then

   v_sql :='update temp set '|| colname ||'=trim(replace('|| colname ||

        ',chr(10),''''))'||'where instr('|| colname ||

        ',chr(10))>0 '

   EXECUTEIMMEDIATE V_SQL;

   commit;

  endif;

  --替换回车符chr(13)

  v_sql :='select count(1) from temp where instr('|| colname ||

       ',chr(13))>0 '

  EXECUTEIMMEDIATE V_SQL

   intocnt;

  if cnt > 0then

   v_sql :='update temp set '|| colname ||'=trim(replace('|| colname ||

        ',chr(13),''''))'||'where instr('|| colname ||

        ',chr(13))>0 '

   EXECUTEIMMEDIATE V_SQL;

   commit;

  endif;

  --替换'|' chr(124) 为'*' chr(42)

  v_sql :='select count(1) from temp where instr('|| colname ||

       ',chr(124))>0 '

  EXECUTEIMMEDIATE V_SQL

   intocnt;

  if cnt > 0then

   v_sql :='update temp set '|| colname ||'=replace('|| colname ||

        ',chr(124),chr(42))'||'where instr('|| colname ||

        ',chr(124))>0 '

   EXECUTEIMMEDIATE V_SQL;

   commit;

  endif;

 endloop;

endPROC_test;

/

 

相关文章

精彩推荐