Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Primärschlüssel ohne Berücksichtigung der Groß-/Kleinschreibung vom Typ nvarchar, wobei ß !=ss

Ah, aber es ist möglich wie es ist eine Sortierung, die dies auf natürliche Weise handhabt (eigentlich mehrere, aber alle in derselben "Familie"):Hungarian_Technical_* (Nun, abzüglich der Variationen CaseSensitive (CS) und Binary (BIN / BIN2). Natürlich bin ich mir immer noch nicht sicher, ob dies eine gute Wahl für einen PK ist, aber kein Grund, warum es kein UNIQUE INDEX sein kann .

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]);

Ergebnisse:

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

Es gibt insgesamt 24 Sortierungen, die auf diese Weise funktionieren. Sie finden sie unter:

SELECT hc.*
FROM sys.fn_HelpCollations() hc
WHERE hc.name LIKE N'Hungarian[_]Technical%'
AND hc.name LIKE N'%[_]CI%'
ORDER BY hc.name;

Sie sind:

Wenn die Version 100 Sortierungen verfügbar sind (d. h. Sie verwenden SQL Server 2008 oder neuer), dann verwenden Sie diese und nicht die Sortierungen ohne Versionsnummer im Namen.

BEARBEITEN:
Ich habe einige zusätzliche Informationen über die Kollation "Hungarian Technical" gefunden, die von Interesse sein könnten:

  • MySQL:Ungarische Sortierung -- Dies ist ein Archiv einer Listserv-Diskussion einiger MySQL-Entwickler, die versuchten, die Besonderheiten der Implementierung der Sortierung herauszufinden. Anscheinend hat es einige komplexe Regeln, die zumindest teilweise darauf zurückzuführen sind, dass mehrere Zeichen zum Sortieren einem einzigen Zeichen gleichgesetzt werden müssen (siehe Abschnitt "3. Spezielle Digraph / Trigraph-Regel"). Das vielleicht ein unerwartetes Verhalten verursachen. Die spezifischen Buchstabenkombinationen sind in diesem Abschnitt notiert, sodass es zumindest einfacher ist, einen Testfall einzurichten, um festzustellen, ob die Sortierregeln mit dieser Sortierung ungültig werden.

  • Warum gibt es so viele(106) ungarische Kollatierungen? -- Dies ist eine Diskussion auf social.msdn, die einige interessante Informationen enthält. Darin ist ein Kommentar von Erland Sommarsko, in dem er sagt:

    Angesichts der Diskussion der MySQL-Entwickler über die komplexen Regeln scheinen diese Testergebnisse nicht allzu überraschend zu sein.

Daher sollten diese beiden Elemente wahrscheinlich bei der Entscheidung berücksichtigt werden, ob man den einfachen Weg geht, einfach das NVARCHAR-Feld auf eine dieser ungarischen technischen Sortierungen zu setzen, oder sich an die Empfehlung von @GarethD für die berechnete Spalte hält.

Weitere Informationen zum Arbeiten mit Zeichenfolgen und Kollatierungen finden Sie unter:Collations Info