sql >> Databasteknik >  >> RDS >> Mysql

Hur man kontrollerar (eller till och med ställer in) sortering i mdb (ms access)-fil?

Jag kom på det här. Jag använde Collator-klassen för korrekt sortering.

FYI det ser ut så här (detta är sortering av ArrayList):

public class AccessSorter
{ 
final static String letters = "< a, A < b, B < c, C < d, D < e, E < f, F < g, G < h, H < i, I < j, J < k, K < l, L < m, M < n, N < o, O < p, P < q, Q < r, R < s, S < t, T < u, U < v, V < w, W < x, X < y, Y < z, Z";
final static String digits = "< 0 < 1 < 2 < 3 < 4 < 5 < 6 < 7 < 8 < 9";
final static String special = "< '.' < '_'";
private RuleBasedCollator accessCollator;


AccessSorter()
{
    try
    {
        accessCollator = new RuleBasedCollator(special + digits + letters);
    }
    catch (ParseException e)
    {
        e.printStackTrace();
    }
}


SomeComparator getSomeComparator()
{
    return new SomeComparator();
}

class SomeComparator implements Comparator<String[]>
{
    @Override
    public int compare(String[] s1, String[] s2)
    {
       return accessCollator.compare(s1[1], s2[1]);
    }
}

}

exempel på användning:

Collections.sort(someCollectionOfStringArray, new AccessSorter().getSomeComparator()

Och nu behöver du inte oroa dig för samlingar av åtkomst eller mySQL. Du sätter regler själv. Naturligtvis tar det lite tid att sortera en sådan array.
Kom ihåg att om du behöver sortera stora arrayer mer än en gång, överväg att använda getCollatorKey() för att öka effektiviteten.
Kom också ihåg om du behöver lägga till samlare semikolon, punkter, citattecken sätter dem i ' '.
Jag hoppas att det hjälper dig på något sätt. Hälsningar.




  1. MySQL-utlösare:Uppdatera när en viss datum och tid uppnås

  2. MySQL standardvärde som andra fälts värde

  3. Spara en bild i MySQL från Java

  4. MySQL aggregerad summa av JSON-objekt