sql >> Database teknologi >  >> RDS >> PostgreSQL

PostgreSQL ignorerer bindestreger ved bestilling

Dette er fordi da_DK.utf8 locale definerer det på denne måde. Linux-lokalitetsbevidste hjælpeprogrammer, for eksempel sort vil også fungere sådan her.

Din convert_to(name, 'latin1') vil bryde, hvis den finder et tegn, der ikke er på latin 1 tegnsæt, for eksempel , så det er ikke en god løsning.

Du kan bruge order by convert_to(name, 'SQL_ASCII') , som vil ignorere lokalitetsdefineret sortering og blot bruge byteværdier.

Grimme hack edit:

order by
  (
    ascii(name) between ascii('a') and ascii('z')
    or ascii(name) between ascii('A') and ascii('Z')
    or ascii(name)>127
  ),
  name;

Dette vil først sortere alt, der starter med ASCII ikke-bogstav. Det er meget grimt, for sortering længere i streng ville opføre sig mærkeligt, men det kan være godt nok for dig.



  1. mysql5.58 afstart server i mac os 10.6.5

  2. Der er brug for råd til korrekt indeksering af en tabel med mange felter, der skal søges på

  3. Skal jeg bruge én stor SQL Select-sætning eller flere små?

  4. SQLT og partitionering