在SQLite中收集NOCASE

时间:2017-09-17 06:02:05

标签: android sql sqlite android-sqlite

我使用COLLATE NOCASE在sqlite数据库中运行sql查询,这样它就会忽略用户输入是大写或小写并检索数据。但它实际上并不起作用。 Place1和Place2有像Bagmati,Basantapur这样的数据,但是当用户输入Place1作为bagmati时,它就不会提供数据。

public String getTaxiDistance(String name, String depart){
        String [] columns = {"fare"};

        c = db.rawQuery("select Distance from TaxiFinalData where Place1 = '"+name+"' COLLATE NOCASE and Place2 = '"+depart+"' COLLATE NOCASE or Place1 = '"+depart+"' COLLATE NOCASE and Place2 = '"+name+"'COLLATE NOCASE", new String[]{});


        StringBuffer buffer = new StringBuffer();
        while(c.moveToNext()){

            String employyename = c.getString(0);


            buffer.append(employyename+"");
        }

        return buffer.toString();

    }

2 个答案:

答案 0 :(得分:0)

意识到Sqlite中的upper()和lower()仅适用于ASCII码表

答案 1 :(得分:-1)

您可以在请求中将所有内容转换为大写,这应该可以解决问题!

c = db.rawQuery("select Distance from TaxiFinalData where upper(Place1) = upper('"+name+"') and upper(Place2) = upper('"+depart+"') or upper(Place1) = upper('"+depart+"') and upper(Place2) = upper('"+name+"')", new String[]{});
相关问题