数据库查询汉字排序

Android SQLite(原生)

步骤1: 在创建数据库的地方 写上这句代码
  @Override
  public void onCreate(Database db) {
    getReadableDatabase().setLocale(Locale.CHINESE);//添加这一行
    super.onCreate(db);
  }
步骤2: 在查询语句 最后面 加上 ORDER BY 列名称 COLLATE LOCALIZED ASC
  例如:
      SELECT * FROM Student  WHERE age > 15  ORDER BY name COLLATE LOCALIZED ASC

|



Android GreenDao(第三方ORM)

步骤1: 在创建数据库的地方 写上这句代码
  @Override
  public void onCreate(Database db) {
    getReadableDatabase().setLocale(Locale.CHINESE);//添加这一行
    super.onCreate(db);
  }
步骤2: 在queryBuilder后面加.preferLocalizedStringOrder().orderAsc(LzLianPositionsEntityDao.Properties.PositionName).list();
  例如:
      studentDao.queryBuilder().where(StudentDao.Properties.Age.gt(15)).preferLocalizedStringOrder().orderAsc(StudentDao.Properties.Name).list();

|



附送 排序后 颠倒 字符 和 汉字的位置
  public static List studentListChange(List list) {
    if (null != list && list.size() > 2) {
        int indexKey = 0;
        for (int i = list.size() - 1; i >= 0; i--) {
            Student student = list.get(i);
            if (!TextUtils.isEmpty(student.getName())) {
                char c = student.getName().charAt(0);
                if (c > 255) {
                    indexKey = i + 1;
                    break;
                }
            }
        }
        if (indexKey > 0) {
            ArrayList tempStudentList = new ArrayList<>(list.subList(0, indexKey));
            tempStudentList .addAll(0, list.subList(indexKey, list.size()));
            return tempStudentList ;
        }
    }
    return list;
  }

你可能感兴趣的:(数据库查询汉字排序)