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

SQL Server JOIN chybí hodnoty NULL

Můžete být explicitní ohledně spojení:

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)

V praxi bych pravděpodobněji použil coalesce() ve stavu připojení:

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, ''))

Kde '' by byla hodnota, která není v žádné z tabulek.

Jen upozornění. Ve většině databází použití kterékoli z těchto konstrukcí brání použití indexů.



  1. Jsou složené jedinečné klíče indexovány v MySQL? - DBMS

  2. Zkontrolujte, zda je řetězec sloupců v databázi podřetězcem dotazu ve sqlite

  3. Získejte první pondělí v roce v SQLite

  4. TO_CHAR(číslo) Funkce v Oracle