Oracle從字串資源中得到想要的資料分析

來源:互聯網
上載者:User

標籤:blog   http   io   ar   sp   資料   on   2014   問題   

[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從字串資源中得到想要的資料分析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.