2009-10-27 19 views
23

Ich muss die Sortierung einer Nvarchar-Variable ändern. By documentation:Cast-Kollatierung von Nvarchar-Variablen in t-sql

(...) 3. Die COLLATE-Klausel auf mehreren Ebenen festgelegt werden können. Dazu gehören die folgenden :

Casting der Kollation einer Ausdruck. Sie können die Klausel COLLATE verwenden, um einen Zeichenausdruck auf eine bestimmte Kollatierung anzuwenden. Zeichen Literale und Variablen werden die Standardsortierung der aktuellen -Datenbank zugewiesen. Spaltenreferenzen sind zugewiesen die Definition Kollation von der Spalte. Für die Kollation eines -Ausdrucks siehe Collation Precedence (Transact-SQL).

Allerdings kann ich die richtige Syntax für die Verwendung von CAST(), CONVERT() oder Variablendeklaration mit DECLARE für diesen Zweck nicht herausfinden.

Antwort

28
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS 
+0

Vielen Dank! :) 15thanks –

+0

Dies kommt von hier: http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx – penguat

14

CAST oder CONVERT ist überflüssig!

SELECT N'abc' COLLATE French_CS_AS 

Es ist überflüssig, da nur die Sortierung zu ändern nicht die Typdaten ändern NVARCHAR.

3

Wenn Sie zwischen 2 und 1 Byte ändern, oder umgekehrt, Zeichenkodierungen dann CAST oder Convert ist notwendig. Es ist in diesen Fällen nicht überflüssig.

Wenn die Quellenspalte eine 2-Byte-Zeichenfolge (nchar, nvarchar) ist und die Auswahlprojektion ein einzelnes Bytezeichen (char, varchar) sein muss, sollten Sie die Besetzung und Konvertierung angeben. Wenden Sie die Kollatierungsumwandlung vor dem Casting zwischen den Typsystemen an.

SELECT CAST(N'ФBC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte