sql >> Database teknologi >  >> RDS >> Mysql

Hvordan kontrolleres (eller endda indstilles) sortering i mdb (ms access) fil?

Jeg fandt ud af det. Jeg brugte Collator-klassen til korrekt sortering.

FYI ser det sådan ud (dette er sortering af 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]);
    }
}

}

eksempel på brug:

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

Og nu behøver du ikke bekymre dig om samlinger af adgang eller mySQL. Du sætter reglerne selv. Det tager selvfølgelig noget tid at sortere et sådant array.
Husk, hvis du har brug for at sortere store arrays mere end én gang, så overvej at bruge getCollatorKey() for at øge effektiviteten.
Husk også, hvis du skal tilføje til Samler semikolon, punktum, anførselstegn sætter dem i ' '.
Jeg håber, det vil hjælpe dig på en eller anden måde. Med venlig hilsen.




  1. SQL-forespørgsel på mindst én af noget

  2. Aggregeret forespørgsel uden GROUP BY

  3. Er der en bedste praksis/sammenhængende måde at opdatere et databasefelt, der indeholder et hash-nøgle-værdilager?

  4. Forklar uforklarlig dødvande