Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse (https://www.delphipraxis.net/180648-sortieren-liefert-bei-werten-mit-unterstrich-unterschiedliche-ergebnisse.html)

Jumpy 5. Jun 2014 08:35

Datenbank: Oracle • Version: 11g • Zugriff über: Ado->ODBC

Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse
 
Hallo,

das folgende SQL-Test-Statement liefert auf verschiedenen Rechnern unterschiedliche Ergebnisse:

SQL-Code:
SELECT *  FROM
  (
    SELECT '_TEST' AS NAME FROM DUAL
    UNION ALL
    SELECT 'TASTE' AS NAME FROM DUAL
    UNION ALL
    SELECT 'baum' AS NAME FROM DUAL
    UNION ALL
    SELECT 'zaun' AS NAME FROM DUAL
  )
ORDER BY UPPER(NAME)
Code:
Auf Rechner 1:      Auf Rechner 2:
(Überraschung)      (das Erwartete)
baum                baum
TASTE               TASTE
_TEST               zaun
zaun                _TEST
Das Problem ist der Unterstrich/Underscore.
Es wird die selbe Datenbank abgefragt, NLS_SORT steht in beiden Fällen auf Binary. Der installierte Oracle-Client scheint auch der selbe zu sein 11.2.0.

Was kann Clientseitig das Sortieren auf der Datenbank noch beeinflussen?

himitsu 5. Jun 2014 08:43

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse
 
Die Zeichensätze haben praktisch eine "eigene" Sortierung und bei Rechner 1 wird dann halt der _ bei der Sortierung eben nicht beachtet.

Fazit: Prüft mal, was da bei Connection/Datenbankt/Tabelle/Feldern als CARACTER SET / COLLATION eingestellt ist.

PS: Gilt das OrderBy, bei Unions nicht eh erst für das Endergebnis
SQL-Code:
SELECT '_TEST' AS NAME
UNION
SELECT 'TASTE' AS NAME
UNION
SELECT 'baum' AS NAME
UNION
SELECT 'zaun' AS NAME
ORDER BY UPPER(NAME)

Sir Rufo 5. Jun 2014 08:44

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse
 
Hast du die Doku dazu gelesen?

http://docs.oracle.com/cd/E11882_01/...v.htm#i1005949

Jumpy 5. Jun 2014 11:39

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse
 
Meine Aussage NLS_SORT steht auf Binary bezog sich nur auf den Server, dank Sir Rufo's Link weiß ich nun, dass da die Einstellung auf dem Client auch eine Rolle spielt und die scheint unterschiedlich zu sein. Während sich ein Kollege nun mit dem Wieso, Weßhalb, Warum beschäftigen darf, hab ich unter dem Link auch die Lösung für mein Problem gefunden:

Code:
ORDER BY NLSSORT(UPPER(NAME),''NLS_SORT=BINARY'')';
@Himitsu:
Hab ich auch gedacht und wenn ich nur "Order By Name" nehme geht das auch. Verwende ich aber dabei z.B. noch die Upper-Funktion "Order By Upper(Name)" kommt die Oracle-Fehlermeldung:
"ORA-01785: Order By-Angabe muss Positionsnummer von der SELECT-Liste enthalten"


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz