AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse
Thema durchsuchen
Ansicht
Themen-Optionen

Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse

Ein Thema von Jumpy · begonnen am 5. Jun 2014 · letzter Beitrag vom 5. Jun 2014
Antwort Antwort
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#1

Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse

  Alt 5. Jun 2014, 09:35
Datenbank: Oracle • Version: 11g • Zugriff über: Ado->ODBC
Hallo,

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

SQL-Code:
SELECT * FROM
  (
    SELECT '_TESTAS NAME FROM DUAL
    UNION ALL
    SELECT 'TASTEAS NAME FROM DUAL
    UNION ALL
    SELECT 'baumAS NAME FROM DUAL
    UNION ALL
    SELECT 'zaunAS 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?
Ralph
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse

  Alt 5. Jun 2014, 09:43
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 '_TESTAS NAME
UNION
SELECT 'TASTEAS NAME
UNION
SELECT 'baumAS NAME
UNION
SELECT 'zaunAS NAME
ORDER BY UPPER(NAME)
$2B or not $2B

Geändert von himitsu ( 5. Jun 2014 um 09:49 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse

  Alt 5. Jun 2014, 09:44
Hast du die Doku dazu gelesen?

http://docs.oracle.com/cd/E11882_01/...v.htm#i1005949
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Jumpy

Registriert seit: 9. Dez 2010
Ort: Mönchengladbach
1.737 Beiträge
 
Delphi 6 Enterprise
 
#4

AW: Sortieren liefert bei Werten mit Unterstrich unterschiedliche Ergebnisse

  Alt 5. Jun 2014, 12:39
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"
Ralph
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:53 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