度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle删除字段中的空格、回车及指定字符 [打印本页]

作者: fteair    时间: 2020-4-17 17:05
标题: oracle删除字段中的空格、回车及指定字符
  1. create or replace procedure PROC_test is
  2.   --Description:删除字段中的指定字符(回车chr(13)、换行chr(10))
  3.   --By LiChao
  4.   --Date:2016-03-01

  5.   colname varchar(20); --列名
  6.   cnt     number; --包含换行符的列的行数
  7.   v_sql   varchar(2000); --动态SQL变量
  8. begin
  9.   --读取表中的列
  10.   for col in (select column_name
  11.                 from user_tab_columns
  12.                where table_name = 'TEMP') loop
  13.     colname := col.column_name;
  14.    --替换换行符chr(10)
  15.     v_sql := 'select count(1)  from temp  where instr(' || colname ||
  16.              ',chr(10))>0 ';
  17.     EXECUTE IMMEDIATE V_SQL
  18.       into cnt;
  19.     if cnt > 0 then
  20.       v_sql := 'update temp set ' || colname || '=trim(replace(' || colname ||
  21.                ',chr(10),''''))' || 'where instr(' || colname ||
  22.                ',chr(10))>0 ';
  23.       EXECUTE IMMEDIATE V_SQL;
  24.       commit;
  25.     end if;
  26.    --替换回车符chr(13)
  27.     v_sql := 'select count(1)  from temp  where instr(' || colname ||
  28.              ',chr(13))>0 ';
  29.     EXECUTE IMMEDIATE V_SQL
  30.       into cnt;
  31.     if cnt > 0 then
  32.       v_sql := 'update temp set ' || colname || '=trim(replace(' || colname ||
  33.                ',chr(13),''''))' || 'where instr(' || colname ||
  34.                ',chr(13))>0  ';
  35.       EXECUTE IMMEDIATE V_SQL;
  36.       commit;
  37.    
  38.     end if;
  39.     --替换'|' chr(124) 为'*' chr(42)
  40.     v_sql := 'select count(1)  from temp  where instr(' || colname ||
  41.              ',chr(124))>0 ';
  42.     EXECUTE IMMEDIATE V_SQL
  43.       into cnt;
  44.     if cnt > 0 then
  45.       v_sql := 'update temp set ' || colname || '=replace(' || colname ||
  46.                ',chr(124),chr(42))' || 'where instr(' || colname ||
  47.                ',chr(124))>0  ';
  48.       EXECUTE IMMEDIATE V_SQL;
  49.       commit;
  50.    
  51.     end if;
  52.   end loop;

  53. end PROC_test;
  54. /
复制代码



作者: caixuqad    时间: 2020-4-17 18:39

作者: fteair    时间: 2020-4-18 14:24
caixuqad 发表于 2017-5-17 18:39


作者: Adam丶鱼    时间: 2020-4-18 19:30
fteair 发表于 2017-5-18 14:24


作者: fteair    时间: 2020-4-19 16:03
Adam丶鱼 发表于 2017-5-18 19:30


作者: 张兴康    时间: 2020-4-20 18:27

作者: fteair    时间: 2020-4-22 14:39
张兴康 发表于 2017-5-20 18:27


作者: caixuqad    时间: 2020-4-22 21:26

作者: fteair    时间: 2020-4-23 15:13
caixuqad 发表于 2017-5-22 21:26


作者: 张兴康    时间: 2020-4-23 20:16

作者: fteair    时间: 2020-4-24 15:40
张兴康 发表于 2017-5-23 20:16


作者: 张兴康    时间: 2020-4-24 20:51
fteair 发表于 2017-5-24 15:40






欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2