Wie kann ich die Sortierfolge festlegen, die SQL Server für die Dauer dieser Verbindung verwendet?
Erst wenn ich eine Verbindung zu SQL Server herstelle, weiß ich, welche Sortierung ich verwenden möchte.
z.B. Ein Browser mit der Sprache fr-IT
ist mit der Website verbunden. Bei allen Abfragen, die ich über diese Verbindung führe, möchte ich der Sortierung Französisch, italienische Variante folgen.
Ich stelle mir eine hypothetische Eigenschaft auf Verbindungsebene vor, ähnlich wie SET ANSI_NULLS OFF
, aber für die Kollation 1 :
und später
%Vor%und später
%Vor%Zur gleichen Zeit, wenn ein chinesischer Kunde eine Verbindung herstellt:
%Vor%oder
%Vor%oder
%Vor% Jetzt kann jede SELECT
-Anweisung im System ändern, damit ich eine Kollatierung übergeben kann:
Sie können eine Sortierfolge jedoch nicht als Parameter an eine gespeicherte Prozedur übergeben:
%Vor% Und die COLLATE
-Klausel kann mir nicht helfen, wenn sie UPDATE
oder SELECT
ausführt.
Hinweis: Alle String-Spalten in der Datenbank sind alle bereits nchar
, nvarchar
oder ntext
. Ich spreche nicht über die Standardsortierung, die auf einen Server, eine Datenbank, eine Tabelle oder eine Spalte für Nicht-Unicode-Spalten angewendet wird (d. h. char
, varchar
, text
). Ich spreche über die Sortierung, die von SQL Server beim Vergleichen und Sortieren von Zeichenfolgen verwendet wird.
Wie kann ich eine Verbindung Sortierung angeben?
1 hypothetische SQL, die Gebietsschema-Probleme anzeigt
Wie marc_s kommentiert wurde, ist die Kollatierung eine Eigenschaft einer Datenbank oder einer Spalte und nicht einer Verbindung.
Sie können die Sortierung jedoch auf Anweisungsebene mit dem Schlüsselwort COLLATE außer Kraft setzen.
Verwenden Sie Ihre Beispiele:
%Vor%Ich kann immer noch keine Aussage über die Verwendung von COLLATE mit einem dynamischen Kollatierungsnamen finden, so dass nur dynamische Dynamic SQL und EXEC möglich sind. Ein Beispiel hierfür finden Sie diesen Social.MSDN-Eintrag .
Tags und Links sql-server sql-server-2005 locale globalization collation