S'il vous plait aider moi ,
Je veux faire un split de cet requette en java et le but est d'extracter tout les prédicat existent dans cette requette
j'ai fait ce code mes les resultats sont fausses
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 explain plan set statement_id='test1' into plan_table for SELECT /*+index(a actvar_city_bji*/ AVG(UNITSSOLD) ,CUSTOMER_LEVEL,TIME_LEVEL FROM ACTVARS A,CUSTLEVEL C,PRODLEVEL P,TIMELEVEL T,CHANLEVEL CH WHERE A.CUSTOMER_LEVEL=C.STORE_LEVEL AND A.PRODUCT_LEVEL=P.CODE_LEVEL AND A.TIME_LEVEL=T.TID AND A.CHANNEL_LEVEL=CH.BASE_LEVEL AND P.DIVISION_LEVEL IN ('W4L29U5MH2PH','EOGVOZWSXUZJ') AND P.LINE_LEVEL IN ('RRJ2BVCZ06W5','A0GOH1W5C4QE','TUOYZ8HVPA4V','NA0YR6QURPGM','Q21FD466A8YC','T4FS9XK5TJU5') AND T.QUARTER_LEVEL IN ('Q2','Q4') AND T.DAY_LEVEL IN ('TUESDAY','FRIDAY','MONDAY','WEDNESDAY') AND C.CITY_LEVEL IN ('SANJOSE','TALLAHASSEE','COLUMBIA','TUCSON','LONGBEACH','MIDLAND','WESTMINSTER') AND C.RETAILER_LEVEL IN ('L4ALZZHI3GJY','WCKPLQIQ0AW4','JXJ1D20VJWKD','EN9MSQOVUXFX','S59AX1O2F59P','S89XNEWS6HCJ','STDGQM83YFQN','MJHERP82KIUD') GROUP BY CUSTOMER_LEVEL,TIME_LEVEL desc plan_table
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63 while ((line = bufferReader.readLine()) != null) { if(line.contains(" WHERE ")) temp = line.split(" WHERE "); for(int m = 0; m< temp.length; m++){ if(temp[1].contains(" AND ")){ temp2 = temp[1].split(" AND "); System.out.println(temp2[3]); }} for (int j=0; j < temp2.length; j++) { if(temp2[j].contains(" IN ")){ temp1 = temp2[j].split(" IN "); for(int m = 0; m<temp1.length; m++){ if(temp1[m].contains("GROUP BY")){ str4 = temp1[m].split("GROUP BY"); ve.addElement(str4[0]); }else{ if(m==0){ str9 = temp1[0].split("\\."); vecteur.addElement(str9[1]); str9=null; } if(m==1) ve.addElement(temp1[1]); } } }else{ if(str3[j].contains("='")){ str6 = str3[j].split("='"); for(int d = 0; d < str6.length; d++){ if(str6[d].contains("'")){ str7 = str6[d].split("'"); for(int w = 0; w < str7.length; w++){ ve.addElement(str7[w]);} } else{ str8 = str6[d].split("\\."); vecteur.addElement(str8[1]); str8 =null; } } } } }
Partager