Problém můžete vyřešit tak, že vynutíte řazení použité v dotazu jako konkrétní řazení, např. SQL_Latin1_General_CP1_CI_AS
nebo DATABASE_DEFAULT
. Například:
SELECT MyColumn
FROM FirstTable a
INNER JOIN SecondTable b
ON a.MyID COLLATE SQL_Latin1_General_CP1_CI_AS =
b.YourID COLLATE SQL_Latin1_General_CP1_CI_AS
Ve výše uvedeném dotazu by a.MyID a b.YourID byly sloupce s textovým datovým typem. Pomocí COLLATE
vynutí dotaz, aby ignoroval výchozí řazení v databázi a místo toho použil poskytnuté řazení, v tomto případě SQL_Latin1_General_CP1_CI_AS
.
V zásadě jde o to, že každá databáze má své vlastní řazení, které „poskytuje pro vaše data třídicí pravidla, velikost písmen a přízvuk“ (z http://technet.microsoft.com/en-us/library/ms143726.aspx ) a vztahuje se na sloupce s textovými datovými typy , např. VARCHAR
, CHAR
, NVARCHAR
atd. Když mají dvě databáze různá řazení, nemůžete porovnávat textové sloupce pomocí operátoru jako je rovno (=), aniž byste řešili konflikt mezi dvěma nesourodými řazeními.