2012-12-03 3 views
-4

에 나는이 같은 쿼리가 있습니다.문자열 연산은 자바

또한 <=을 몇 번 반복했는지 알고 싶습니다.

+3

아직 시도해 봤어? –

+0

본격적인 SQL 구문 분석기가 없으면 일반적으로 매우 어렵습니다. 어쩌면이 도움이됩니다 : http://stackoverflow.com/questions/660609/sql-parser-library-for-java – Thilo

+2

그냥 'AND's 및'OR's + 1 (첫 번째 조건) ? – Kai

답변

0

당신은 단순히 내가하지는

bool whereCondition = false; 
int counterCompare = 0; 
int counterConditions = 0; 
// select is your SQL String 
for(int i = 0;i<select.length;++i) 
{ 
    if(whereCondition){ 
     if(select.charAt(i) = '<' || select.charAt(i) = '>') { 
      ++counterCompare; 
     } 
     if(select.charAt(i) = '=' && !(select.charAt(i+1) = '<' || select.charAt(i+1) = '>')) { 
      ++counterCompare; 
     } 
     if (select.charAt(i) = 'A') { 
     if(i+2 < select.length) { 
      if(select.charAt(i+1) = 'N' && 
       select.charAt(i+2) = 'D') 
        ++counterCondition; 
     } 
     } 
     if (select.charAt(i) = 'O') { 
     if(i+4 < select.length) { 
      if(select.charAt(i+1) = 'R' && 
       select.charAt(i+2) = 'D' && 
       select.charAt(i+3) = 'E' && 
       select.charAt(i+4) = 'R' &&) 
        whereCondition = false; 
     } 
     } 
    } 
    else { 
     if (select.charAt(i) = 'W') { 
      if(i+4 < select.length) { 
      if(select.charAt(i+1) = 'H' && 
       select.charAt(i+2) = 'E' && 
       select.charAt(i+3) = 'R' && 
       select.charAt(i+4) = 'E' &&) 
        whereCondition = true; 
      } 
     } 
    } 
} 

이 코드가 작동 할 것을 약속 루프로 = 모든> 셀 수 있습니다. 당신은 또한 주문을 기반으로 조건을 처리해야합니다. 그래서 당신은 당신이 테이블을 비교하고있는 String이 아니면 And를 찾았는지 확인해야합니다. 작거나 키가 큰 글자가 있는지 확인해야합니다. 하지만 이것은 단지 기본 비교입니다

관련 문제