А, но е възможно, тъй като е съпоставка, която се справя с това естествено (всъщност няколко, но всички в едно и също „семейство“):Hungarian_Technical_* (е, без вариациите CaseSensitive (CS) и Binary (BIN / BIN2). Разбира се, все още не съм сигурен, че това е добър избор за PK, но няма причина да не може да бъде 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]);
Резултати:
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
Има общо 24 сравнявания, които ще работят по този начин. Можете да ги намерите чрез:
SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;
Те са:
Ако версията 100
съпоставянията са налични (което означава:използвате SQL Server 2008 или по-нов), тогава използвайте тези, а не съпоставянията без номер на версията в техните имена.
РЕДАКТИРАНЕ:
Намерих някаква допълнителна информация за сравняването „Унгарски технически“, която може да представлява интерес:
-
MySQL:унгарско съпоставяне -- Това е архив на дискусия на listserv от някои разработчици на MySQL, които се опитват да разберат спецификата на това как да внедрят сортирането. Очевидно той има някои сложни правила, дължащи се поне отчасти на необходимостта от приравняване на множество знаци в един знак за сортиране (потърсете раздел "3. Специално правило за диграф/триграф"). Това може предизвика някакво неочаквано поведение. Конкретните комбинации от букви са отбелязани в този раздел, така че най-малкото улеснява настройването на тестов случай, за да се определи дали правилата за сортиране правят невалидно използването на това съпоставяне.
-
Защо има толкова много (106) унгарски съпоставки? -- Това е дискусия в social.msdn, която съдържа интересна информация. Там има коментар от Erland Sommarsko, в който той заявява:
Предвид дискусията от разработчиците на MySQL относно сложните правила, резултатите от тези тестове не изглеждат чак толкова изненадващи.
И така, и двата елемента вероятно трябва да бъдат взети под внимание при вземането на решение дали да се премине по лесния път, или не, просто да се зададе полето NVARCHAR на едно от тези унгарски технически съпоставки или да се следва препоръката на @GarethD за изчислената колона.
За повече информация относно работата с низове и съпоставки, моля, посетете:Информация за съпоставки