0

私は2つのデータベーステーブルを持っています.最初のテーブルには、宛先の電話番号を持つ「Destination」列が含まれ、2番目のテーブルには、エリアコードを持つ「Areacode」が含まれています。

想定: 宛先番号='001891191080' エリアコード:001,0018,00185 など

問題は、宛先番号が 0018 ではなく 001 エリアコードと一致することです。

 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");

ここで私の必要に応じて、目的の値を取得し、最後のループから開始してチェックしていますが、最初の値と一致するとすぐにスキップし、他の正確な可能性をチェックしません...正確な値を一致させる方法非常に多くの可能性があります...どんな助けでも大歓迎です..事前に感謝します

4

4 に答える 4

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

を使用String#subString(begin index,End index)することで、短い文字列を作成し、両方を一致させることができます。

for ループで connection と statement` を作成しないでください。

于 2012-10-15T04:57:31.230 に答える
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 に答える
0

最初に文字列の長さに基づいて「市外局番」を並べ替え (多いものから少ないものへ)、次に「宛先番号」の一致を確認します。

于 2012-10-15T04:58:31.450 に答える