2010-11-18 10 views
0

Subquestioning die Antwort auf meine andere Frage:Wie werden Symbole anhand der Sortierung verglichen, die sich von der Standardsortierung der Datenbank unterscheidet?

Wie besser vergleichen 2 (nicht-N ') Symbole explizit eine Sortierung verwendet wird, die aus einer Standard Datenbankkollatierung unterscheidet?

Update: Ich brauche char() oder varchar zu vergleichen() Werte, die ich aus einer Datenbank extrahiert und sie in Variablen @ s1 und @ s2

use dbName; 
--here I alternated different db names with different collations 

declare @s1 nchar(1)='à' 
declare @s2 nchar(1)='a' 
select 
    case 
    when @s1 <> @s2 Then 'a is NOT equal à' 
    else 'a is equal to à' 
    end 
collate latin1_General_CS_AS 

Ausgänge

  • a gleich a (auf Datenbank mit Sortierung Latin1_General_CI_AI default)
  • a ist nicht gleich a (auf db mit Latin1_General_CI_AS

Antwort

2

Sie sagen es, wie die Saiten sammeln ‚a nicht gleich à ist‘ und ‚a gleich a‘, anstatt für den Vergleich:

declare @s1 nchar(1)='à' 
declare @s2 nchar(1)='a' 
select 
    case 
    when @s1 <> @s2 collate latin1_General_CS_AS Then 'a is NOT equal à' 
    else 'a is equal to à' 
    end 
+0

Ist es möglich, Standard-Datenbanksortierung für eine außer Kraft setzen Block von Operationen statt COLLATE in jeder Anweisung zu schreiben? –

+0

@ vgv8 - Ich bin mir nicht bewusst, eine Möglichkeit dazu - die Hilfe für Collate, http://msdn.microsoft.com/en-us/library/ms184391.aspx, zeigt nur 3 Stellen, die es verwendet werden kann (DB-Definition, Spaltendefinition und Kollatierungscasts, was wir hier tun). –