Je dois changer le classement d'une variable nvarchar. Par documentation :
(...) 3. La clause COLLATE peut être spécifiée à plusieurs niveaux. Ceux-ci incluent le Suivant:
Lancer la collation d'un expression. Vous pouvez utiliser le COLLATE clause d'application d'une expression de caractère à un certain classement. Personnage les littéraux et les variables sont attribués le classement par défaut du courant base de données. Les références de colonne sont assigné la définition collation de la colonne. Pour la collation d'un expression, voir Collation Precedence (Transact-SQL).
Cependant, je ne peux pas déterminer la syntaxe correcte pour l'utilisation de CAST (), CONVERT () ou d'une déclaration de variable avec DECLARE à cette fin.
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
CAST
ou CONVERT
est superflu!
SELECT N'abc' COLLATE French_CS_AS
Il est superflu car le simple fait de modifier le classement ne modifie pas le type de données NVARCHAR
.
Si vous passez de 2 à 1 octet, ou vice-versa, des codages de caractères, alors CAST ou Convert est nécessaire. Ce n'est pas superflu dans ces cas.
Lorsque la colonne source est une séquence de caractères sur 2 octets (nchar, nvarchar) et que la projection de sélection doit comporter un caractère sur un seul octet (char, varchar), vous devez spécifier la conversion et la conversion. Appliquez la conversion de classement avant la conversion entre les systèmes de types.
SELECT CAST(N'ФBC' COLLATE SQL_Latin1_General_CP1_CI_AS as varchar(10)) AS ProjectedSingleByte
Si vous souhaitez comparer ou joindre deux colonnes de classements différents, cela pourrait aider . Dans mon cas, je devais comparer deux colonnes avec l'une utilisant 'SQL_Latin1_General_CP1_CI_AS' et l'autre utilisant 'Latin1_General_CP1_CI_AS'.
J'ai simplement utilisé cette option pour rejoindre ces deux personnes.
sur A.Person = B.NAME collate database_default