• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > 一个比较复杂的多次拆分字符串的存储过程

一个比较复杂的多次拆分字符串的存储过程

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了多次拆分,字符串,存储过程等相关知识,希望本文的分享对您有所帮助
自己写的特殊拆分函数如下:
create or replace function FN_SPLIT_STR_2(var_str in varchar2)return varchar2
/*
有一张表 t1,里面有个字段叫c3,存的是所有店铺的点位信息。
现在需要一个存储过程,将所有的记录的c3字段的坐标值都缩小3倍,写入c字段


内容举例为 220.25 257,220.25 269.75,229.25 269.75,229.25 257
每个逗号分开的是一个个的坐标点,每个坐标点用空格区分x坐标和y坐标


存储函数名称:FN_SPLIT_STR_2
用途:把bis_store坐标v_coords3缩小三倍更新coords,比如
author:huangshan
*/

as
  var_tmp     varchar2(4000);
  var_element varchar2(4000);
  var_result varchar2(4000);
  var_instr_first number;
  var_instr_second number;
  var_length number;




begin

  var_tmp := var_str;
  var_instr_first :=0;
  var_instr_second :=0;
  var_result :='';
  var_length:=0;



/* 替换掉传过来的特殊字符
chr(9) 制表符
chr(10)回车
chr(13)换行
*/

  var_tmp:= replace(var_tmp,chr(10),'');
  var_tmp:= replace(var_tmp,chr(13),'');
  var_tmp:= replace(var_tmp,chr(9),'');
  
  while instr(var_tmp, ' ') > 0 
    or instr(var_tmp, ',')>0 
    or(var_length>0) loop
    var_instr_first :=instr(var_tmp, ' ');
    var_instr_second :=instr(var_tmp, ',');
   -- dbms_output.put_line('var_instr_kg:'||var_instr_first||'  ');
   -- dbms_output.put_line('var_instr_dh:'||var_instr_second||'  ');
         var_length:=length(var_tmp);
   --  dbms_output.put_line('var_length  :'||var_length||'  ');



/* 1 如果是先有空格,比如 12 32,12 32这类 **/

  if var_instr_first<var_instr_second  then
         var_element := round(to_number(substr(var_tmp, 1, var_instr_first-1))/3,2);
         var_result := var_result|| var_element|| ' ';
         var_tmp := substr(var_tmp,var_instr_first+1, length(var_tmp));
      --   dbms_output.put_line('var_result kg:'||var_result);
      --   dbms_output.put_line('var_tmp kg:'||var_tmp||'  ');
      --   dbms_output.put_line('var_element kg:'||var_element||'  ');



/* 2 如果是已经截取完空格,逗号在前面比如 32,12 32这类 **/

  elsif var_instr_first>var_instr_second and  var_instr_second>0 then
           var_element := round(to_number(substr(var_tmp, 1, var_instr_second-1))/3,2);
           var_result := var_result || var_element || ',' ;
           var_tmp := substr(var_tmp,var_instr_second+1, length(var_tmp));
         --  dbms_output.put_line('var_result dh:'||var_result);
        --   dbms_output.put_line('var_tmp dh:'||var_tmp||'  ');
        --   dbms_output.put_line('var_element dh:'||var_element||'  ');



/* 3 如果是已经截取完逗号,已经只剩下最后一个坐标x y,比如12 32这类 **/

 elsif var_instr_first>var_instr_second and  var_instr_second=0 then
         var_element := round(to_number(substr(var_tmp, 1, var_instr_first-1))/3,2);
         var_result := var_result|| var_element|| ' ';
         var_tmp := substr(var_tmp,+1, length(var_tmp));
       --  dbms_output.put_line('var_result kg:'||var_result);
       --  dbms_output.put_line('var_tmpvar_instr_first kg:'||var_tmp||'  ');
        -- dbms_output.put_line('var_element kg:'||var_element||'  ');



/* 4 如果是已经截取到最后一个坐标,比如32这类 **/

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 一个比较复杂的多次拆分字符串的存储过程

相关文章

  • 2018-12-05MYSQL学习总结(五):MYSQL主从搭建
  • 2018-12-05可以改善mysql性能的InnoDB配置参数
  • 2017-05-11mysql实现本地keyvalue数据库缓存示例
  • 2018-12-05 MongoDB小结
  • 2018-12-05INNODB如何使用?INNODB使用方法总结
  • 2018-12-05介绍几种mysql常用的优化方法
  • 2018-12-05linux mysql 找回密码
  • 2017-05-11MySQL的id关联和索引使用的实际优化案例
  • 2018-12-05关于MySQL 索引详解
  • 2018-12-05分布式情况下生成数据库唯一ID的解决方案

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 数据库实现批量删除数据的操作方法(代码实例)
    • 怎么解决localhost无法链接本地mysql数据库问题
    • Oracle中AIO解析
    • Oracle字符串中包含数字、特殊符号的排序问题解决方法
    • sphinxql如何得到结果数及show meta的详细说明
    • MySQL中MyISAM与InnoDB区别【详解】
    • Mysql Data目录和 Binlog 目录 搬迁的方法
    • 详解MySQL5.7不停业务将传统复制变更为GTID复制的示例代码
    • mysql select语句操作实例
    • MySQL入门教程4 —— 创建表并将数据装入表

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有