Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Microsoftsche Fehlermeldung beim SQL-Server oder wie...? (https://www.delphipraxis.net/55691-microsoftsche-fehlermeldung-beim-sql-server-oder-wie.html)

alzaimar 25. Okt 2005 13:57

Datenbank: MSSQL • Version: 2000 • Zugriff über: TSQL

Microsoftsche Fehlermeldung beim SQL-Server oder wie...?
 
Ich habe eine Adressliste, bei der ich mal doppelte Einträge rausfiltern wollte, also so:
SQL-Code:
select adname1+adname2+adname3+adstreet, count (*)
from address
group by adname1+adname2+adname3+adstreet
having count (*)>1
Und es erscheint folgende Meldung, die eine gewisse Form der Ratlosigkeit erzeugt, erkennbar an einem schlapp herunterhängendem Unterkiefer, zumindest bei mir.

Code:
Server: Msg 457, Level 16, State 1, Line 1
Die implizite Konvertierung des varchar-Wertes in varchar kann nicht ausgeführt werden, da die Sortierung des Wertes wegen eines Konflikts der Sortierung nicht gelöst ist.
Was will uns der Autor damit sagen?
Eine Allegorie auf die Leichtigkeit der konzentrierten Beinhaltung?
Oder die Metapher als Kernstück einer Transestenz?

Oder weiss irgendjemand etwas Genaues?

Germanisten, bitte vortreten!

shmia 25. Okt 2005 15:16

Re: Microsoftsche Fehlermeldung beim SQL-Server oder wie...?
 
Ab MS SQL Server 2000 hat ein varchar oder char - Feld ein zusätzliches Attribut,
die Kollation.
Damit ist die Sortierreihenfolge von Stringfeldern gemeint.
Wenn du im Enterprise-Manager die Tabelle bearbeitest, dann solltest du die Kollation
aller betroffenen Felder auf den Datenbankstandard setzen.
Ein kleiner Datenverlust bei der Konvertierung des Zeichensatzes ist möglich.

alzaimar 25. Okt 2005 16:33

Re: Microsoftsche Fehlermeldung beim SQL-Server oder wie...?
 
Hi shmia!
Danke!

Ich habe es so gemacht (geht auch):
SQL-Code:
select (adname1 COLLATE Latin_General) +
       (adname2 COLLATE Latin_General) +
       (adname3 COLLATE Latin_General) + 
       (adstreet COLLATE Latin_General),
count (*)
from address
group by
       (adname1 COLLATE Latin_General) +
       (adname2 COLLATE Latin_General) +
       (adname3 COLLATE Latin_General) + 
       (adstreet COLLATE Latin_General)
having count (*)>1
Und in der Tabelle bemerkt, das einige Felder so, andere als '<database default>' deklariert sind. Ich werde also dem DB-Designer mal ein paar Takte erzählen.

Danke nochmals. Thema ist erledigt. Was dazugelernt!


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr.

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