Ah, maar het is mogelijk aangezien er is een verzameling die dit van nature afhandelt (meerdere eigenlijk, maar allemaal in dezelfde "familie"):Hungarian_Technical_* (nou ja, minus de CaseSensitive (CS) en Binary (BIN / BIN2) variaties). Natuurlijk weet ik nog steeds niet zeker of dit een goede keuze is voor een PK, maar geen reden waarom het geen UNIQUE INDEX
kan zijn .
SELECT tmp.*,
IIF(tmp.[First] = tmp.[Second] COLLATE Hungarian_Technical_CI_AI,
N'Equal',
N'NOT EQUAL') AS [Result]
FROM (
SELECT N'weiß', N'Weiß', N'Equal'
UNION ALL
SELECT N'weiss', N'Weiss', N'Equal'
UNION ALL
SELECT N'weiß', N'weiss', N'NOT Equal'
UNION ALL
SELECT N'Weiß', N'Weiss', N'NOT Equal'
UNION ALL
SELECT N'weiß', N'Weiss', N'NOT Equal'
) tmp ([First], [Second], [Ideal]);
Resultaten:
First Second Ideal Result
weiß Weiß Equal Equal
weiss Weiss Equal Equal
weiß weiss NOT Equal NOT EQUAL
Weiß Weiss NOT Equal NOT EQUAL
weiß Weiss NOT Equal NOT EQUAL
Er zijn in totaal 24 sorteringen die op deze manier werken. Je vindt ze via:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
Dit zijn:
Als de versie 100
sorteringen beschikbaar zijn (wat betekent:u gebruikt SQL Server 2008 of nieuwer), gebruik dan die en niet de sorteringen zonder versienummer in hun naam.
BEWERKEN:
Ik heb wat aanvullende informatie gevonden over de "Hongaarse technische" verzameling die van belang kan zijn:
-
MySQL:Hongaarse sortering -- Dit is een archief van een listserv-discussie door een aantal MySQL-ontwikkelaars die proberen te achterhalen hoe de sortering moet worden geïmplementeerd. Blijkbaar heeft het een aantal complexe regels, in ieder geval gedeeltelijk vanwege de noodzaak om meerdere karakters gelijk te stellen aan een enkel karakter om te sorteren (kijk naar sectie "3. Speciale digraph/trigraph rule"). Dit misschien onverwacht gedrag veroorzaken. De specifieke lettercombinaties worden in dat gedeelte vermeld, dus het maakt het in ieder geval gemakkelijker om een testcase op te zetten om te helpen bepalen of de sorteerregels ongeldig zijn bij het gebruik van deze sortering.
-
Waarom zijn er zoveel (106) Hongaarse collaties? -- Dit is een discussie op social.msdn met interessante informatie. Er staat daar een opmerking van Erland Sommarsko waarin hij zegt:
Gezien de discussie van de MySQL-ontwikkelaars over de complexe regels, lijken die testresultaten niet zo verrassend.
Dus met beide items moet waarschijnlijk rekening worden gehouden bij de beslissing om al dan niet de gemakkelijke weg te volgen door het veld NVARCHAR eenvoudig in te stellen op een van deze Hongaarse technische sorteringen, of om te gaan met de aanbeveling van @GarethD voor de berekende kolom.
Ga voor meer informatie over het werken met strings en collaties naar:Collations Info