Aha, ale je možné, jak je porovnávání, které to zvládá přirozeně (ve skutečnosti několik, ale všechny ve stejné „rodině“):Hungarian_Technical_* (dobře, bez variací CaseSensitive (CS) a Binary (BIN / BIN2). Samozřejmě si stále nejsem jistý, zda je to dobrá volba pro PK, ale žádný důvod, proč to nemůže být 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]);
Výsledky:
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
Existuje celkem 24 porovnávání, které budou fungovat tímto způsobem. Najdete je na:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
Jsou to:
Pokud je verze 100
kolace jsou k dispozici (to znamená:používáte SQL Server 2008 nebo novější), pak použijte tyto a ne kolace bez čísla verze v názvu.
UPRAVIT:
Našel jsem nějaké další informace o porovnávání "Maďarské technické", které by mohly být zajímavé:
-
MySQL:maďarské řazení -- Toto je archiv diskuse na listservu od některých vývojářů MySQL, kteří se snaží zjistit specifika, jak implementovat řazení. Zjevně má některá složitá pravidla, alespoň částečně kvůli potřebě srovnat více znaků do jediného znaku pro třídění (hledejte sekci "3. Speciální pravidlo digrafu/trigrafu"). Toto může způsobit nějaké neočekávané chování. Konkrétní kombinace písmen jsou v této části uvedeny, takže to alespoň usnadňuje nastavení testovacího případu, který pomůže určit, zda pravidla třídění ruší platnost pomocí tohoto řazení.
-
Proč existuje tolik(106) maďarských porovnávání? -- Toto je diskuse na social.msdn, která obsahuje zajímavé informace. Je tam komentář od Erlanda Sommarska, ve kterém uvádí:
Vzhledem k diskuzi vývojářů MySQL o složitých pravidlech se tyto výsledky testů nezdají až tak překvapivé.
Obě tyto položky by tedy pravděpodobně měly být zohledněny při rozhodování, zda jít jednoduchou cestou jednoduše nastavit pole NVARCHAR na jedno z těchto maďarských technických porovnávání, nebo postupovat podle doporučení @GarethD ohledně vypočítaného sloupce.
Další informace o práci s řetězci a porovnáváním naleznete na adrese:Informace o porovnávání