【问题标题】:COLLATE NOCASE in SQLiteSQLite 中的整理 NOCASE
【发布时间】:2018-02-25 22:08:12
【问题描述】:

我已经使用 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();

    }

【问题讨论】:

  • Works for me。显示namedepart 的实际值,以及您认为应该匹配的表格行。

标签: android sql sqlite android-sqlite


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    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[]{});
    

    【讨论】:

      猜你喜欢
      • 2020-09-27
      • 2017-12-10
      • 1970-01-01
      • 1970-01-01
      • 2013-02-03
      • 2012-06-27
      • 1970-01-01
      • 1970-01-01
      • 2013-11-28
      相关资源
      最近更新 更多