如何从sqlite数据库中的列返回第一个charc?

时间:2016-09-12 09:41:47

标签: android sqlite

如何从我的数据库列返回第一个charc?

解释:我的问题很详细,我有像

这样的记录集
  • 苹果

    爱丽丝

    蝙蝠

它将继续如何从该列返回第一个charc。我已尝试使用子字符串进行不同的查询,但它抛出无法读取行如何解决此问题需要获得第一个字符,如 a,b,c .. 让我发布我到目前为止所尝试的内容:

 public List<AccountModel> Header(){
    String countQuery ="select DISTINCT lower(substr("+AccountModel.acc_companyname+",1,1)) as char from "+AccountModel.acc_table  +" ";
    Cursor cursor = db.rawQuery(countQuery, null);
    List<AccountModel>list=new ArrayList<>();
    if(cursor!=null && cursor.getCount()>0){
        if(cursor.moveToFirst()){
            do{
                AccountModel accountModel=new AccountModel();
                accountModel.setCompanyName(cursor.getString(cursor.getColumnIndex(AccountModel.acc_companyname)));
                 list.add(accountModel);
            }while (cursor.moveToNext());
        }
    }
    if(cursor!=null){
        cursor.setNotificationUri(mcontext.getContentResolver(), DB_Account);
    }
    return list;
}

如何使用distinct和substring从我的记录中获取第一个charc,并且需要在列表中设置它提前感谢

1 个答案:

答案 0 :(得分:2)

像这样更新你的Header方法:

 public Cursor Header(){
        String countQuery = "select DISTINCT lower(substr("+AccountModel.acc_companyname+",1,1)) as inital_char from "+AccountModel.acc_table  +" ";
        Cursor cursor = db.rawQuery(countQuery, null);
        return cursor;
    }

问题在你的substr方法中。

原始查询是:

SELECT DISTINCT(SUBSTR(name, 1, 1)) AS indexChar
FROM myTable
ORDER BY indexChar

快乐编码!!!!

相关问题