Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да коригирате конфликт на съпоставяне в заявка на SQL Server?

Можете да разрешите проблема, като принудите съпоставянето, използвано в заявка, да бъде конкретно съпоставяне, напр. SQL_Latin1_General_CP1_CI_AS или DATABASE_DEFAULT . Например:

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

В горната заявка a.MyID и b.YourID ще бъдат колони с текстово базиран тип данни. Използване на COLLATE ще принуди заявката да игнорира съпоставянето по подразбиране в базата данни и вместо това ще използва предоставеното съпоставяне, в този случай SQL_Latin1_General_CP1_CI_AS .

По същество това, което се случва тук, е, че всяка база данни има свое собствено съпоставяне, което „осигурява правила за сортиране, свойства за чувствителност на малки и големи букви за вашите данни“ (от http://technet.microsoft.com/en-us/library/ms143726.aspx ) и се отнася за колони с текстови типове данни , напр. VARCHAR , CHAR , NVARCHAR и т.н. Когато две бази данни имат различни съпоставяния, не можете да сравнявате текстови колони с оператор като equals (=), без да адресирате конфликта между двете различни съпоставяния.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да върнете Unicode стойността за даден символ в SQL Server – UNICODE()

  2. Проверете типа на параметъра на функцията на дял в SQL Server (T-SQL)

  3. Използвайте COLUMNPROPERTY() за връщане на информация за колона или параметър в SQL Server

  4. Как работят имплицитните транзакции в SQL Server

  5. Добавяне на множество параметризирани променливи към база данни в C#