Domanda

Devo cambiare le regole di confronto di una variabile nvarchar. Per documentazione :

  

(...)   3. È possibile specificare la clausola COLLATE   a più livelli. Questi includono il   seguenti:

     

Lanciare le regole di confronto di un   espressione. Puoi usare COLLATE   clausola per applicare un'espressione di carattere   a un certo confronto. Personaggio   vengono assegnati valori letterali e variabili   le regole di confronto predefinite della corrente   Banca dati. I riferimenti alle colonne sono   assegnato la definizione di confronto di   la colonna. Per la raccolta di un   espressione, vedi Precedenza di confronto   (Transact-SQL).

Tuttavia non riesco a capire la sintassi corretta per l'uso di CAST (), CONVERT () o la dichiarazione di variabili con DECLARE a questo scopo.

È stato utile?

Soluzione

SELECT CAST('abc' AS varchar(5)) COLLATE French_CS_AS

Altri suggerimenti

CAST o CONVERT è superfluo!

SELECT N'abc' COLLATE French_CS_AS

È superfluo perché il semplice cambiamento delle regole di confronto non modifica il tipo di dati NVARCHAR .

Se si cambia tra 2 e 1 byte, o viceversa, le codifiche dei caratteri sono necessarie CAST o Convert. In questi casi non è superfluo.

Quando la colonna di origine è una sequenza di caratteri a 2 byte (nchar, nvarchar) e la proiezione della selezione deve essere un carattere a byte singolo (char, varchar), è necessario specificare il cast e la conversione. Applica la conversione delle regole di confronto prima del casting tra i sistemi di tipi.

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

Se si desidera confrontare o unire due colonne di regole di confronto diverse, ciò potrebbe essere d'aiuto. Nel mio caso ho dovuto confrontare due colonne con una usando "SQL_Latin1_General_CP1_CI_AS" e l'altra usando "Latin1_General_CP1_CI_AS".

Ho semplicemente usato questa opzione quando mi unisco a questi due.

  

su A.Person = B.NAME fascicola database_default

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top