2016-04-15 23 views

回答

0

我沒有找到任何簡單的方法。我創建了額外的排序表列,其中包含規範化數據(記錄爲here)。創建常數規範化表列名前綴:

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; 
}