0

我有两个数据库表。第一个表包含具有目的地电话号码的“目的地”列,第二个表包含具有区号的“区号”。

假设:目的地号码='001891191080' 区号:001,0018,00185 等

现在的问题是目的地号码匹配 001 区号而不是 0018..

 for (int i = 10; i >= 0; i--) {
        try {
            String ss = destination.substring(0, i);
            Statement st = null;
            ResultSet rs = null;

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/asteriskcdrdb", "root", "techsoft");
            st = con.createStatement();
            rs = st.executeQuery("Select * from sp1 where areacode like '" + ss + "'");
            while (rs.next()) {
                areacode = rs.getString("AreaCode");

主席先生,根据我的需要,我正在获取目标值并从最后一个开始检查 for 循环。但是一旦它与第一个值匹配,它就会跳过并且不检查其他和确切的可能性......如何匹配确切的值有这么多的可能性......任何帮助将不胜感激......提前谢谢

4

4 回答 4

1
Destination number='001891191080' Areacode :001,0018

通过使用String#subString(begin index,End index),您可以制作短字符串并尝试匹配两者。

您不应该在 for 循环中创建连接和语句。

于 2012-10-15T04:57:31.230 回答
0

首先根据字符串的长度(从多到少)对“区域代码”进行排序,然后检查“目标编号”中的匹配项。

于 2012-10-15T04:58:31.450 回答
0

首先从大字符串匹配开始,例如

   String destNumber = "001891191080";
   String[] areaCodes = new String[]{ "001","0018"};

   if(destNumber.indexOf(areaCodes[1])>=0){   //<- use 0018 first
     //....
   }else if(destNumber.indexOf(areaCodes[0])>=0){
     //...
   }
于 2012-10-15T05:11:30.750 回答
0

您可以尝试使用此查询吗?

"Select * from sp1 where areacode like '" + ss + "%' order by areacode desc"

所以那应该给你

00185
0018
001

在结果集中,比较将返回列表中的第一个值。

于 2012-10-15T05:36:43.960 回答