[oracle]从字符串资源中得到想要的数据分析
需求:订单分析,按照游戏,帐号级别,游戏帐号职业,区服,价格区间分析各款交易数据走势


目标:订单表(order)
处理分析:订单中可以直接读到的标示有游戏、区服、价格。并且已经有相关配置可以关联此类

信息。
问题分析1:帐号职业,帐号级别等交易信息在订单中没有详细的标示,只可以通过其他信息获

取。
处理思路1:通过订单中的标题大概的分析职业和帐号级别。
标题格式如:

处理思路:从标题中提取出职业和帐号等级。
职业:
substr
(
o5.bizoffername,
instr(o5.bizoffername,'【',1,1)+1,
instr(o5.bizoffername,' ',1,1)-(instr(o5.bizoffername,'【',1,1)+1)

级别:
substr
(
o5.bizoffername,
instr(o5.bizoffername,' ',1,3)+1,
instr(o5.bizoffername,'级',1,1)-(instr(o5.bizoffername,' ',1,3)+1)

处理结果如图:

问题分析2:级别类似'50'这样的是从字符串中提取出来的,作为参数和帐号级别区间维度比较

时会发生无效字符。
处理思路2:果断的想到把字符转化为number,to_number。
问题分析3:转化为to_number后还是会遇到无效字符。
处理思路3:还存在着其他问题,于是创建了一个自定义函数is_number。
CREATE OR REPLACE FUNCTION is_number(parameter VARCHAR2) RETURN NUMBER IS
  val NUMBER;
BEGIN
  val := TO_NUMBER(NVL(parameter, 'a'));--参数为空则复制字符a
  RETURN 1;
EXCEPTION--当遇到'40'这样的TO_NUMBER转化正常,当遇到'40的'时TO_NUMBER异常返回0,
  WHEN OTHERS THEN
    RETURN 0;
END;
然后看了用思路1处理出来的基础数据,用where IS_NUMBER(级别)=0,发现确实存在一些很少的

处理不规范的'你好20'类似级别字段与number区间判断时就报错了,根源所在。于是只好排除了

这几十条不规则的数据。最终得到业务的需求:

Oracle从字符串资源中得到想要的数据分析的更多相关文章

  1. DBA避坑宝典:Oracle运维中的那些事儿

    对于Oracle运维中的那些事儿,我的最终目的:不是比谁更惨,而是能够从中吸取经验和教训. 从我的理解来看,我会从下面的几个方面来进行说明DBA运维中的一些事儿. 每个部分都是非常关键的,缺一不可,而 ...

  2. Oracle采购模块中的多组织访问控制(MOAC)

     1. 概述 从Release12开始启用多组织访问控制功能,将允许用户在一个单独的职责中访问一个或者多个经营单位(OU-Operation Units)的数据.这个功能允许用户在一个可共享服务的 ...

  3. Oracle数据库脚本中的set define off

    2018年8月6日15:11:34 Oracle数据库脚本中的set define off 前言 最近在公司写需求,接触到脚本,第一句set define off;就不知道什么意思了,查询后记录之. ...

  4. Oracle sql语句中不支持boolean类型(decode&case)

    [转自] http://blog.csdn.net/t0nsha/article/details/7828538 Oracle sql语句中不支持boolean类型(decode&case) ...

  5. Oracle在plsql中修改数据

    Oracle在plsql中想要修改数据,有两种方式: a.使用rowid+点击锁图标,语句为: select t.*,rowid from T_BIC_PLY_MAIN t;   b.使用for up ...

  6. ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍

    如果我是C罗 原文 ORACLE PL/SQL 中序列(sequence)的简易使用方法介绍 sequence在ORACLE中应用十分广泛,就是序列号的意思,会自动增加指定变数,如逐次增加1或者2或者 ...

  7. Oracle 实现表中id字段自增长

    Oracle 实现表中id字段自增长 最近正在学习Oracle的时候发现Oracle表中的字段不能像mysql中那样可以用auto increment修饰字段从而让id这种主键字段实现自增长. 那Or ...

  8. 在Azure上的VM镜像库中找到想要的镜像

    Azure上的虚机镜像库中, 有很多的镜像,其中当然也包括了用户自定义上传的镜像. 在Powershell中如果想使用这些镜像的话, 则需要知道其名称 下面这条命令,可以获得所有的镜像信息 $imag ...

  9. Oracle系列——开发中奇葩问题你遇到几个(一)

    前言:在使用oracle数据进行开发的时候有没有经常出现一些很奇怪.很纳闷.很无厘头的问题呢.下面是本人使用oracle一段时间遇到的问题小节,在此做个记录,方便以后再遇到类似的问题能快速解决.如果你 ...

随机推荐

  1. ny55 懒省事的小明

    懒省事的小明 时间限制:3000 ms  |            内存限制:65535 KB 难度:3 描述       小明很想吃果子,正好果园果子熟了.在果园里,小明已经将所有的果子打了下来,而 ...

  2. Eclipse+tomcat+axis2进行web service部署

    用Eclipse+axis2+tomcat进行web service部署 2016-12-07 目录  1 安装JDK  1.1 下载JDK  1.2 安装和配置JDK  1.3 验证2 安装Ecli ...

  3. 【Java】线程池的作用

    在程序启动的时候就创建若干线程来响应处理,它们被称为线程池,里面的线程叫工作线程  第一:降低资源消耗.通过重复利用已创建的线程降低线程创建和销毁造成的消耗.  第二:提高响应速度.当任务到达时,任务 ...

  4. tomcat 8 加 struts2的 java.lang.NoSuchFieldException: resourceEntries

    google发现已经有人把这个bug提交给了apache,issue地址,具体原因就是 Tomcat8 introduce super class WebappClassLoaderBase and ...

  5. Android开发日记(一)

    实现点击一个图片按钮跳转到一个动作ImageViewSchoolCard = (ImageView) view.findViewById(R.id.ImageViewLostThings); Imag ...

  6. sqlachemy中批量删除的问题

    db.session.query(Article).filter(Article.id.in_(items)).delete() 报错: sqlalchemy.exc.InvalidRequestEr ...

  7. perl ExtUtils::Manifest

    Can't locate ExtUtils/Manifest.pm in @INC (you may need to install the ExtUtils::Manifest module) yu ...

  8. calloc内存分配函数

    calloc是一个C语言函数 函数名: calloc void *calloc(unsigned n,unsigned size): 功 能: 在内存的动态存储区中分配n个长度为size的连续空间,函 ...

  9. 基于jQuery/CSS3实现拼图效果的相册插件

    今天我们要来分享一款很酷的jQuery相册插件,首先相册中的图片会以一定的角度倾斜放置在页面上,点击图片缩略图就可以展开图片,并且图片是由所有缩略图拼接而成,图片展开和收拢的动画效果也非常不错.当然图 ...

  10. 从c++看js的那些概念

    感觉c++逐渐没落了,js正风生水起,各种概念层出不穷. reactjs,flux ,angularjs cmd,amd模块化设计. 初看起来好像很高端的样子,后来发现也不过是如此. c++毕竟经历了 ...