Wie Sie legen die Sortierung für eine Verbindung in SQL Server?
Wie kann ich die Sortierung in SQL Server wird für die Dauer der Verbindung?
Nicht, bis ich eine Verbindung zum SQL-Server muss ich wissen, welche Sortierung ich verwenden möchte.
z.B. einen browser mit Sprache fr-IT
hat mit der web-site. Fragen habe ich am laufen, die Verbindung, die ich Folgen wollen französische Sprache, die Italien-Variante Sortierung.
Stelle ich mir eine hypothetische Verbindung level-Eigenschaft, Analog zum SET ANSI_NULLS OFF
, aber für die Sortierung1:
SET COLLATION_ORDER 'French_CI_AS'
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
und später
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '%l''ecole%'
und später
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = 'Cour de l''école'
Zur gleichen Zeit, wenn ein chinesischen Kunden verbindet:
SET COLLATION_ORDER Chinese_PRC_CI_AI_KS_WS
SELECT TOP 100 FROM Orders
ORDER BY ProjectName
oder
SELECT * FROM Orders
WHERE CustomerID = 3277
AND ProjectName LIKE '學校'
oder
UPDATE Quotes
SET IsCompleted = 1
WHERE QuoteName = '學校的操場'
Nun ich könnte verändern jeder SELECT
- Anweisung in das system zu erlauben, mich zu übergeben Sortierung:
SELECT TOP 100 FROM Orders
WHERE CustomerID = 3278
ORDER BY ProjectName COLLATE French_CI_AS
Aber Sie können nicht passieren Sie eine Sortierung, um als einen parameter an eine gespeicherte Prozedur:
CREATE PROCEDURE dbo.GetCommonOrders
@CustomerID int, @CollationOrder varchar(50)
AS
SELECT TOP 100 FROM Orders
WHERE CustomerID = @CustomerID
ORDER BY ProjectName COLLATE @CollationOrder
Und die COLLATE
- Klausel kann mir nicht helfen, wenn die Durchführung einer UPDATE
oder eine SELECT
.
Hinweis: Alle string-Spalten in der Datenbank alle bereits nchar
, nvarchar
oder ntext
. ich spreche nicht über die Standardsortierung angewendet auf einen server, Datenbank, Tabelle oder Spalte, die für nicht-unicode-Spalten (D. H. char
, varchar
, text
). ich spreche über die Sortierung von SQL Server verwendet wird, wenn beim vergleichen und Sortieren von strings.
Wie kann ich festlegen, pro-Verbindung Sortierung?
Siehe auch
- Ähnliche Frage, aber für ADO.net und Verbindungszeichenfolgen
- Ähnliche Frage, aber für ASP.net MVC2 und MySQL
1 hypothetische sql aufweist locale Probleme
Es ist nicht ganz eine Eigenschaft einer Datenbank, Tabellen und Spalten. Es kann eine Eigenschaft eines
ORDER BY
als gut.Leider ist diese Frage, auch wenn diese, keine Antwort hat. @devio ist richtig.
In Ihrem statement schreiben Sie SORTIEREN auf einer separaten Zeile nach der SQL-Anweisung. Dies ist irreführend, da die COLLATE gehört zu der letzten Spalte der ORDER BY-Klausel. Entfernen Sie die BESTELLUNG DURCH, und es wird scheitern.
InformationsquelleAutor Ian Boyd | 2011-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als marc_s kommentiert, die Sortierung ist eine Eigenschaft einer Datenbank oder Spalte handelt, und nicht von einer Verbindung.
Können Sie jedoch überschreiben Sie die Sortierung auf statement-Ebene mit der COLLATE Stichwort.
Mithilfe Ihrer Beispiele:
Immer noch, ich kann nicht finden eine Erklärung über die Verwendung von COLLATE mit einer dynamischen Sortierung Namen, wobei als einzige mögliche Lösung für die dynamische SQL und EXEC. Sehen dieses soziale.MSDN Eintrag für ein Beispiel.
ProjectName
index, etwas zu bestellen; diese Bestellung kommt von der Sortierung der Spalte. Beliebigen Anwendung eine andere Sortierung bei der Durchführung von index-lookups negiert alle IndizesInformationsquelleAutor devio