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 faussesCode:
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:
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; } } } } }