sql >> Databáze >  >> RDS >> Sqlserver

Jak opravit konflikt řazení v dotazu SQL Server?

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.



  1. Dynamický pivot v Oracle SQL - Postup

  2. Určete Oracle null ==null

  3. Spark Dataframes UPSERT to Postgres Table

  4. SQL Server VYBRAT DO @proměnná?