web-dev-qa-db-ger.com

Umwandlung von nvarchar-Variablen in t-sql

Ich muss die Kollatierung einer Nvarchar-Variablen ändern. Nach Dokumentation :

(...) 3. Die COLLATE-Klausel kann angegeben werden auf mehreren Ebenen. Dazu gehören die folgende:

Casting der Kollatierung eines Ausdruck. Sie können das COLLATE .__ verwenden. Klausel zum Anwenden eines Zeichenausdrucks zu einer bestimmten Kollatierung. Charakter Literale und Variablen werden zugewiesen die Standardkollatierung des aktuellen Datenbank. Spaltenreferenzen sind hat die Definitionskollatierung von .__ zugewiesen. die Kolumne. Für die Kollatierung eines Ausdruck, siehe Sortierfolge (Transact-SQL).

Ich kann jedoch nicht die richtige Syntax für die Verwendung von CAST (), CONVERT () oder Variablendeklaration mit DECLARE für diesen Zweck ermitteln.

26
SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS
31
Lukasz Lysik

CAST oder CONVERT ist überflüssig!

SELECT N'abc' COLLATE French_CS_AS

Dies ist überflüssig, da durch das Ändern der Kollatierung der Datentyp NVARCHAR nicht geändert wird.

16
nalply

Wenn Sie zwischen 2 und 1 Byte (oder umgekehrt) Zeichencodierungen ändern, ist CAST oder Convert erforderlich. In diesen Fällen ist es nicht überflüssig.

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

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

Wenn Sie zwei Spalten verschiedener Sortierreihen miteinander vergleichen oder verknüpfen möchten, kann dies hilfreich sein. In meinem Fall musste ich zwei Spalten mit 'SQL_Latin1_General_CP1_CI_AS' und die andere mit 'Latin1_General_CP1_CI_AS' miteinander vergleichen.

Ich habe einfach diese Option genutzt, wo ich mich diesen beiden anschlage.

on A.Person = B.NAME sortiert database_default

1
Xavier_prash