2012-12-03 130 views
-4

我有这样的查询:字符串操作在java中

"select * from aaa where id < 10 and name = 'test'" 

从这个查询我想以后找出一些条件where(2在这种情况下)。

另外我想知道<=重复了多少次。

+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; 
      } 
     } 
    } 
} 

我不保证此代码工作。你还必须根据订单或一个地方的条件来处理和比较。所以你需要检查,如果你发现了一个和,如果它不是你在表中比较的字符串。你还必须检查你是否有小或高的字母。但这只是一个基本的比较