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

Come controllare (o addirittura impostare) le regole di confronto nel file mdb (ms access)?

L'ho capito. Ho usato la classe Collator per un corretto ordinamento.

Cordiali saluti, sembra così (questo è l'ordinamento di 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]);
    }
}

}

esempio di utilizzo:

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

E ora non devi preoccuparti di regole di confronto di accesso o MySQL. Tu stabilisci le regole da solo. Ovviamente ci vuole del tempo per ordinare tale array.
Ricorda, se hai bisogno di ordinare grandi array più di una volta, considera l'utilizzo di getCollatorKey() per aumentare l'efficienza.
Ricorda anche se devi aggiungere a i punti e virgola, i punti e le virgolette della raccoglitrice li mettono tra ' '.
Spero che ti possa aiutare in qualche modo. Saluti.