2013-10-27 94 views
0

我有一个文本框,我需要在变量中给出输入。输入是用于数据库表的扩展列和数字被视为String.Here是输入条件:字符串拆分基于java中的字符的操作

  1. 只有一个输入像5028
  2. 输入用连字符( - )分隔,如5028-5090。
  3. 用逗号(,)分隔的输入,如5028,5029。
  4. 输入包含单个输入,连字符和逗号,在单个输入处分隔,如5029,1234-4567,9876。

我已经写了条件形成的查询只有一个输入,输入由连字符隔开,输入用逗号单独分开..Now按照我的需要我必须写在那里我必须像输入格式查询条件5029,1234-4567,9876但我没有得到确切的逻辑..

这里是我的代码..

if (extension != "") { 
    if (extension.contains(",")) { 
     query = query.concat(" and (extension='"); 
     String extn[] = extension.split(","); 
     for (int i = 0; i < extn.length; i++) { 
      System.out.println(extn[i]); 
      query = query.concat(extn[i]).concat("'").concat(" or extension='"); 
      System.out.println(query); 
     } 
     query = query.substring(0, query.length() - 15); 
     System.out.println(query); 
     query = query.concat(")"); 
     System.out.println(query); 
    } else if (extension.contains("-")) { 
     query = query.concat(" and cast(extension as signed) >="); 
     String extn[] = extension.split("-"); 
     for (int i = 0; i < extn.length; i++) { 
      System.out.println(extn[i]); 
      query = query.concat(extn[i]).concat(" And cast(extension as signed) <="); 

     } 
     query = query.substring(0, query.length() - 33); 
     System.out.println(query); 

    } else { 
     query = query.concat(" and extension='" + extension).concat("'"); 
     System.out.println(query); 
    } 
} 

请你们帮助我.. 在此先感谢。

+0

对不起,但我不明白你的问题。你有一个复杂的值设置像5029,1234-4567,9876,你想运行一个SELECT查询返回值为5029,1234,4567或9876的行吗? –

+0

@AycanYaşıt是的先生正是我想要做的一样 – vikas

+0

@AycanYaşıt我需要给条件合成查询时,值如5029,1234-4567,9876给出 – vikas

回答

1

执行以下变化: 1. if (!extension.equals(""))

  1. 取代if (extension != "")在第一if条件块if (extension.contains(","))String extn[] = extension.split(",");再次分裂每个字符串分机[] ' - ' 和做其它处理

试试这个

if (!extension.equals("")) { 
if (extension.contains(",")) { 
    query = query.concat(" and (extension='"); 
    String extn[] = extension.split(","); 
    for(int k=0; k <extn.length; k++){ 
    if(extn[k].contains("-")){ 
     String subExtn[] = extn[k].split("-"); 
     for (int i = 0; i < subExtn.length; i++) { 
      //System.out.println(subExtn[i]); 
      query = query.concat(subExtn[i]).concat("'").concat(" or extension='"); 

     } 

    }else{ 
     //for (int i = 0; i < extn.length; i++) { 
      // System.out.println(extn[i]); 
      query = query.concat(extn[k]).concat("'").concat(" or extension='"); 
      // System.out.println(query); 
     //} 
    } 
    //System.out.println(query); 
    } 
    query = query.substring(0, query.length() - 15); 
    // System.out.println(query); 
    query = query.concat(")"); 
    System.out.println(query); 
} else if (extension.contains("-")) { 
    query = query.concat(" and cast(extension as signed) >="); 
    String extn[] = extension.split("-"); 
    for (int i = 0; i < extn.length; i++) { 

     query = query.concat(extn[i]).concat(" And cast(extension as signed) <="); 

    } 
    query = query.substring(0, query.length() - 33); 
    System.out.println(query); 

} else { 
    query = query.concat(" and extension='" + extension).concat("'"); 
    System.out.println(query); 
} 
}