Ach, ale jest możliwe, ponieważ jest zestawienie, które radzi sobie z tym naturalnie (w rzeczywistości kilka, ale wszystkie w tej samej „rodzinie”):Hungarian_Technical_* (no cóż, bez wariantów CaseSensitive (CS) i Binary (BIN / BIN2)). Oczywiście nadal nie jestem pewien, czy jest to dobry wybór dla PK, ale bez powodu nie może to być UNIQUE INDEX
.
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]);
Wyniki:
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
Istnieją łącznie 24 zestawienia, które będą działać w ten sposób. Możesz je znaleźć poprzez:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
Są to:
Jeśli wersja 100
dostępne są sortowania (co oznacza:używasz SQL Server 2008 lub nowszego), a następnie używaj tych, a nie sortowań bez numeru wersji w ich nazwach.
EDYTUJ:
Znalazłem dodatkowe informacje na temat zestawienia „Węgierska technika”, które mogą być interesujące:
-
MySQL:zestawienie węgierskie -- Jest to archiwum dyskusji listserv prowadzonej przez niektórych programistów MySQL próbujących dowiedzieć się, jak zaimplementować sortowanie. Najwyraźniej ma pewne złożone zasady, przynajmniej częściowo ze względu na konieczność zrównania wielu znaków w jeden znak do sortowania (patrz rozdział "3. Specjalna zasada digrafu/trygrafu"). To może spowodować nieoczekiwane zachowanie. Konkretne kombinacje liter są odnotowane w tej sekcji, więc przynajmniej ułatwia to skonfigurowanie przypadku testowego, aby pomóc określić, czy reguły sortowania są nieważne przy użyciu tego sortowania.
-
Dlaczego jest tak wiele(106) zestawień węgierskich? -- To jest dyskusja na social.msdn, która zawiera kilka interesujących informacji. Jest tam komentarz Erlanda Sommarsko, w którym stwierdza:
Biorąc pod uwagę dyskusję twórców MySQL na temat złożonych reguł, te wyniki testów nie wydają się aż tak zaskakujące.
Tak więc oba te elementy prawdopodobnie powinny być brane pod uwagę przy podejmowaniu decyzji, czy wybrać łatwą drogę, po prostu ustawiając pole NVARCHAR na jedną z tych węgierskich zestawień technicznych, czy idąc z zaleceniem @GarethD dla kolumny obliczeniowej.
Więcej informacji na temat pracy z ciągami i sortowaniami znajdziesz na:Informacje o sortowaniach