cuantos - substring sql
Intercambio de colada de variables nvarchar en t-sql (4)
Si desea comparar o unir dos columnas de colación diferente, esto podría ayudar. En mi caso tuve que comparar dos columnas con una usando ''SQL_Latin1_General_CP1_CI_AS'' y la otra usando ''Latin1_General_CP1_CI_AS''.
Simplemente usé esta opción donde me uno a estos dos.
en A.Person = B.NAME compilar database_default
Necesito cambiar la intercalación de una variable nvarchar. Por documentación :
(...) 3. La cláusula COLLATE se puede especificar en varios niveles. Estos incluyen los siguientes:
Casting el cotejo de una expresión. Puede utilizar la cláusula COLLATE para aplicar una expresión de carácter a una determinada intercalación. A los literales de caracteres y las variables se les asigna la intercalación predeterminada de la base de datos actual. A las referencias de columna se les asigna la colación de definición de la columna. Para la intercalación de una expresión, consulte Precedencia de intercalación (Transact-SQL).
Sin embargo, no puedo averiguar la sintaxis correcta para el uso de CAST (), CONVERT () o la declaración de variable con DECLARE para este propósito.
Si está cambiando entre 2 y 1 byte, o vice-ver-sa, las 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 un carácter de un solo byte (char, varchar), debe especificar la conversión y conversión. Aplicar la conversión de colació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
CAST
o CONVERT
es superfluo!
SELECT N''abc'' COLLATE French_CS_AS
Es superfluo porque solo cambiar la intercalación no cambia el tipo de datos NVARCHAR
.
SELECT CAST(''abc'' AS varchar(5)) COLLATE French_CS_AS