2012年8月29日 星期三

REGEXP切割字串


SQL> with test as 
  2  (select 'ABC,DEF,GHI,JKL,MNO' str from dual 
  3  ) 
  select regexp_substr (str, '[^,]+', 1, rownum) split 
  5    from test 
  connect by level <= length (regexp_replace (str, '[^,]+'))  + 1
  7  / 
SPLIT
---------------------------------------------------------------------
ABC
DEF
GHI
JKL
MNO




參考
http://nuijten.blogspot.tw/2009/07/splitting-comma-delimited-string-regexp.html

http://www.oradev.com/regular_expressions_sql_oracle.jsp

2012年8月19日 星期日

透過Chrome安裝JavaScript指令

只要在執行檔的後面多加下面的指令
再重新跑剛剛下載的JS檔案,就可以直接安裝了

 --enable-easy-off-store-extension-install


參考:
http://blog.noob.tw/chrome-web-store-only

2012年8月2日 星期四

用select寫出迴圈的效果


之前看到別人的程式用了 commect by rownum < 100的寫法
覺得很漂亮,可以直接產生有迴圈的效果
而且在SQL裡面,用join的效能會比跑迴圈好很多
所以後來有一些本來要跑迴圈的,就用這個方法去執行

SELECT ROWNUM N FROM DUAL CONNECT BY ROWNUM < 100


附加切割字串:
--字符串split的壹種方法
SELECT DBMS_LOB.SUBSTR(REGEXP_SUBSTR('ABC,DEF,GGG,1,2,3,4,5', '[^,]+', 1, X.N)) AS PLAYER_GUID
  FROM DUAL A, (SELECT ROWNUM N FROM DUAL CONNECT BY ROWNUM < 100) X
  這裏利用了函數 REGEXP_SUBSTR和CONNECT BY
  其中ROWNUM < 100 會連接限制SPLIT的次數 '[^,]+'為SPLIT拆分的正則表達式,這裏為【,】逗號
  上面SQL語句結果是:
  ABC
  DEF
  GGG
  1
  2
  3
  4
  5

 補充:

SELECT REGEXP_SUBSTR('Q,C,P', '[^,]+', 1, ROWNUM) PREFIX FROM DUAL CONNECT BY LEVEL <= LENGTH(REGEXP_SUBSTR('Q,C,P', '[^,]+')) + 1)
執行結果
Q
C
P