Eindeutiger Index "ss - ß" - Problem

01/10/2008 - 13:41 von Antje Kaiser | Report spam
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte einen eindeutigen Index über ein nvarchar-Feld legen. In dem Feld
kommen aber Werte vor wie: "Drössler" und "Drößler". Diese sind natürlich
nicht eindeutig, da meine Sortierung zunàchst nach Standard
Latin1_General_CI_AS ist.
In dieser Newsgroup fand ich Tipps eine binàre Sortierung einzustellen. Das
wàr aber für mein Problem keine Lösung, da ich die Nichtunterscheidung von
Groß- und Kleinbuchstaben schon ganz gut finde. Außerdem steht im
Entwicklerhandbuch SQL Server 2005 (den ich nutze) : Diese sollten Sie nur
benutzen ... wenn die Reihenfolge bei Sortierungen wirklich keine Rolle
spielt. Spielt sie bei mir aber, da es um Namen geht.
Außerdem habe ich im Internet noch folgenden Eintrag als
Sortierungsvorschlag gefunden: SQL_Latin1_General_CP1_CI_AS.
Interessanterweise funktioniert auch das nicht.
Kann mir jemand noch einen Tipp geben?
Dank im vorraus
Gruß
Antje
 

Lesen sie die antworten

#1 Olaf Helper
01/10/2008 - 19:19 | Warnen spam
Hallo Antje,

die COLLATION (Sortierung) ist schon mal der richtige Ansatzpunkz.
Um zu Verstehen, wie es funktioniert/was es bedeutet, muss man sich die
Kürzel auf der "Zunge zergehen" lassen
CS/CI = Case Sensitive / Case Sensitive, also ob Groß-/Kleinschreibung
berücksichtigt wird
AS/AI = Akzent Sensitive / Akzent Insensitive, also wie Umlaute
berücksichtigt werden.

AS/AI ist also das richtige für Dich. Du kannst je [n](var)Char Feld die
COLLATION festlegen und wenn Du angibst, es soll AI sein, dann sind ss = ß
somit identisch.
Was andere Umlaute betrifft, bitte einmal selber testen.


Hier ein Besipiel für Dein Anliegen:

USE [tempdb]
GO

CREATE TABLE #AkzentTable
(MyAkzent varchar(50) COLLATE Latin1_General_CS_AI NOT NULL)
GO
ALTER TABLE #AkzentTable ADD CONSTRAINT
PK_AkzentTable PRIMARY KEY CLUSTERED
(MyAkzent)
GO

INSERT INTO #AkzentTable (MyAkzent)
VALUES ('myTestss') -- es gibt Kürzel, die ich nicht mag :-(
GO

INSERT INTO #AkzentTable (MyAkzent)
VALUES ('myTestß') -- soll das gleiche sein => Fehler
GO

DROP TABLE #AkzentTable
GO


MfG
Olaf Helper




"Antje Kaiser" schrieb im
Newsbeitrag news:
Hallo zusammen,
ich habe folgendes Problem:
Ich möchte einen eindeutigen Index über ein nvarchar-Feld legen. In dem
Feld
kommen aber Werte vor wie: "Drössler" und "Drößler". Diese sind natürlich
nicht eindeutig, da meine Sortierung zunàchst nach Standard
Latin1_General_CI_AS ist.
In dieser Newsgroup fand ich Tipps eine binàre Sortierung einzustellen.
Das
wàr aber für mein Problem keine Lösung, da ich die Nichtunterscheidung von
Groß- und Kleinbuchstaben schon ganz gut finde. Außerdem steht im
Entwicklerhandbuch SQL Server 2005 (den ich nutze) : Diese sollten Sie nur
benutzen ... wenn die Reihenfolge bei Sortierungen wirklich keine Rolle
spielt. Spielt sie bei mir aber, da es um Namen geht.
Außerdem habe ich im Internet noch folgenden Eintrag als
Sortierungsvorschlag gefunden: SQL_Latin1_General_CP1_CI_AS.
Interessanterweise funktioniert auch das nicht.
Kann mir jemand noch einen Tipp geben?
Dank im vorraus
Gruß
Antje

Ähnliche fragen