2009-10-27 8 views
23

Necesito cambiar la intercalación de una variable nvarchar. By documentation:Intercalación de molde de variables nvarchar en t-sql

(...) 3. La cláusula COLLATE se puede especificar en varios niveles. Estos incluyen el siguiente:

Casting la intercalación de una expresión . Puede utilizar la cláusula COLLATE para aplicar una expresión de caracteres a una determinada intercalación. Los literales y las variables de caracteres se asignan a la intercalación predeterminada de la base de datos actual . Las referencias de columna son a las que se les asignó la intercalación de definición de en la columna. Para la intercalación de una expresión , consulte Collation Precedence (Transact-SQL).

Sin embargo, no puedo encontrar la sintaxis correcta para el uso de CAST(), CONVERT() o declaración de variable con DECLARE para este propósito.

Respuesta

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

¡Gracias! :) 15 Gracias –

+0

Esto viene de aquí: http://msdn.microsoft.com/en-us/library/aa226054%28SQL.80%29.aspx – penguat

14

CAST o CONVERT es superfluo!

SELECT N'abc' COLLATE French_CS_AS 

Es innecesario ya que sólo cambiar la colación no cambia el tipo de datos NVARCHAR.

3

Si está cambiando entre 2 y 1 byte, o vice-ver-sa, codificaciones de caracteres entonces CAST o Convert es necesario. No es superfluo en estos casos.

Cuando la columna de origen es una secuencia de caracteres de 2 bytes (nchar, nvarchar) y se requiere que la proyección de selección sea de un solo byte (char, varchar), debe especificar el molde y la conversión. Aplicar la conversión de intercalación antes de la conversión entre los sistemas de tipo.

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