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

SQL Server JOIN липсва NULL стойности

Можете да бъдете изрични относно съединенията:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
     Table2
      ON (Table1.Col1 = Table2.Col1 or Table1.Col1 is NULL and Table2.Col1 is NULL) AND
         (Table1.Col2 = Table2.Col2 or Table1.Col2 is NULL and Table2.Col2 is NULL)

На практика е по-вероятно да използвам coalesce() в условието за присъединяване:

SELECT Table1.Col1, Table1.Col2, Table1.Col3, Table2.Col4
FROM Table1 INNER JOIN
     Table2
     ON (coalesce(Table1.Col1, '') = coalesce(Table2.Col1, '')) AND
        (coalesce(Table1.Col2, '') = coalesce(Table2.Col2, ''))

Където '' ще бъде стойност, която не е в нито една от таблиците.

Само едно предупреждение. В повечето бази данни използването на някоя от тези конструкции предотвратява използването на индекси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Замяна на множество символи в низ в SQL Server (T-SQL)

  2. Сравнение на производителността на SQL Server CE 4.0

  3. Създаване на съхранени процедури, използвайки първо Entity Framework Code?

  4. Вземете краткото име в SQL Server (T-SQL)

  5. ADO .NET срещу SQL Server Management Studio - ADO се представя по-зле