sql >> Database >  >> RDS >> Sqlserver

Hoe een sorteerconflict in een SQL Server-query op te lossen?

U kunt het probleem oplossen door de sortering die in een query wordt gebruikt, te dwingen een bepaalde sortering te zijn, bijv. SQL_Latin1_General_CP1_CI_AS of DATABASE_DEFAULT . Bijvoorbeeld:

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

In de bovenstaande query zijn a.MyID en b.YourID kolommen met een op tekst gebaseerd gegevenstype. COLLATE gebruiken dwingt de query om de standaardsortering in de database te negeren en in plaats daarvan de opgegeven sortering te gebruiken, in dit geval SQL_Latin1_General_CP1_CI_AS .

Wat hier in feite aan de hand is, is dat elke database zijn eigen sortering heeft die "sorteerregels, hoofdlettergevoeligheid en accentgevoeligheidseigenschappen voor uw gegevens biedt" (van http://technet.microsoft.com/en-us/library/ms143726.aspx ) en is van toepassing op kolommen met tekstuele gegevenstypen , bijv. VARCHAR , CHAR , NVARCHAR , enz. Wanneer twee databases verschillende sorteringen hebben, kunt u tekstkolommen niet vergelijken met een operator zoals is gelijk aan (=) zonder het conflict tussen de twee ongelijksoortige sorteringen aan te pakken.



  1. Een overzicht van Quests Nieuwste databasebewakingsservice - Spotlight Cloud

  2. Implementeer paging (overslaan / nemen) functionaliteit met deze query

  3. Controleer en optimaliseer MySQL-database automatisch met Crontab/Cron

  4. Verander van SQLite naar PostgreSQL in een nieuw Rails-project