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

沒有留言:

張貼留言