Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak naprawić konflikt sortowania w zapytaniu SQL Server?

Możesz rozwiązać ten problem, wymuszając sortowanie używane w zapytaniu, aby było konkretnym sortowaniem, np. SQL_Latin1_General_CP1_CI_AS lub DATABASE_DEFAULT . Na przykład:

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

W powyższym zapytaniu a.MyID i b.YourID będą kolumnami z tekstowym typem danych. Korzystanie z funkcji COLLATE zmusi zapytanie do zignorowania domyślnego sortowania w bazie danych i zamiast tego użyje podanego sortowania, w tym przypadku SQL_Latin1_General_CP1_CI_AS .

Zasadniczo chodzi o to, że każda baza danych ma własne sortowanie, które „zapewnia reguły sortowania, wielkość liter i właściwości czułości akcentu dla twoich danych” (z http://technet.microsoft.com/en-us/library/ms143726.aspx ) i dotyczy kolumn z tekstowymi typami danych , np. VARCHAR , CHAR , NVARCHAR itp. Gdy dwie bazy danych mają różne sortowania, nie można porównywać kolumn tekstowych z operatorem takim jak równa się (=) bez rozwiązania konfliktu między dwoma różnymi sortowaniami.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zacząć korzystać z programu SQL Server na platformie Azure

  2. Jak obcinać wszystkie tabele w bazie danych za pomocą TSQL?

  3. Instrukcje:tworzenie wyzwalacza dla daty modyfikacji automatycznej aktualizacji w programie SQL Server 2008

  4. Dynamiczne maskowanie danych w SQL Server dla początkujących

  5. DATEFROMPARTS() Przykłady w SQL Server (T-SQL)