1

有没有什么方法可以在不区分大小写的情况下按照语言环境字母顺序对数据集进行排序?我发现“COLLATE LOCALIZED”、“COLLATE NOCASE”,但“COLLATE LOCALIZED NOCASE”显示错误(也是相反的顺序)。

感谢您的任何回复!

4

2 回答 2

1

这对我有用:

field COLLATE LOCALIZED, field COLLATE NOCASE
于 2019-10-08T00:59:26.913 回答
0

我没有找到任何简单的方法。我创建了额外的排序表列,其中包含规范化数据(在此处注明)。为规范化表列名称前缀创建常量:

public static final String ASCII_PREFIX = "ascii_";

创建的表(对于文本列再创建一个带前缀的列):

String sql = "CREATE TABLE IF NOT EXISTS " + tableName + " (";
for( columnModel column: table.columns ) {
  if( column.position > 0 ){  sql += ", ";  }
  sql += column.dbName + " " + column.dbType;
}
for( columnModel column: table.columns ) {
  if( column.dbType.equals("TEXT") ) {
    sql += ", " + ASCII_PREFIX + column.dbName + " " + column.dbType;
  }
}
sql += ")";
db.execSQL(sql);

更改表数据填充(为特殊列添加规范化数据):

//...cycle for data filling...
ContentValues values = new ContentValues();
for( columnModel column: table.columns ) {
     values.put(column.dbName, valueStr);
     if( column.dbType.equals("TEXT") ){
      values.put(ASCII_PREFIX + column.dbName, normalize(valueStr));
     }
}
db.insert(tableName, null, values);

然后我对文本列进行排序:

//... in method for sorting...
String orderBy;
....                  
if( column.dbType.equals("TEXT") ) {
    orderBy = ASCII_PREFIX + column.dbName;
}else {
    orderBy = column.dbName;
}
于 2016-04-20T13:22:21.700 回答