Aby wiedzieć, czy masz podobne kolumny potencjalnie może być trudniejsze niż inne rozwiązania sugerują. Możemy myśleć, że dwie kolumny są takie same, ponieważ mają takie same nazwy, ale w rzeczywistości, gdy pracujesz w dużej bazie danych z więcej niż jedną osobą, tworzenie, usuwanie i/lub zmiana struktury danych może się zdarzyć niespójności.
Im więcej parametrów sprawdzimy pod kątem podobieństwa, tym bardziej możemy być pewni, że nasze kolumny są podobne bez ręcznej kontroli surowych danych.
1. Po pierwsze, proponuję uruchomić zapytanie, aby zrozumieć parametry danej kolumny.
SELECT
*
FROM
DATABASENAME.INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = N'TABLE1'
Spowoduje to zwrócenie kilku kolumn danych meta w kolumnach w tabeli. Niektóre z meta danych, które uznałem za interesujące dla unikalności, zawierały ...
2. W moim przypadku mam zidentyfikować atrybuty kolumn z COLUMN_NAME, IS_NULLABLE, AND DATA_TYPE
w celu ustalenia, czy moje kolumny naprawdę mecz.
SELECT
DISTINCT A.COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS A
LEFT join INFORMATION_SCHEMA.COLUMNS B
ON A.COLUMN_NAME = B.COLUMN_NAME
AND A.DATA_TYPE = B.DATA_TYPE
AND A.IS_NULLABLE = B.IS_NULLABLE
WHERE
A.TABLE_NAME = N'TABLE1'
AND B.TABLE_NAME = N'TABLE2'
3. Concept Sprawdź ... Może gdyby kiedy JOIN
używając tylko COLUMN_NAME
istnieje 10 pasujących kolumn. Może gdy JOIN
przy użyciu COLUMN_NAME AND DATA_TYPE
istnieje 7 pasujących kolumn. Może kiedy użyjemy wszystkich trzech warunków, jak w powyższym przykładzie, są 4 dopasowane kolumny. Czy to oznacza, że możesz JĄ DOŁĄCZYĆ na 4 pasujących kolumnach ... absolutnie nie. Co to znaczy, musisz zastanowić się, jak zaprojektować obsługę błędów i rzutowanie w zależności od tego, jak zamierzasz DOŁĄCZYĆ do stołów. Point being jest ostrożnym wykonaniem JOIN
na INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
, ponieważ twoje wyniki mogą być dalekie od zamierzonych.
miałem zamiar zaproponować własny dołączyć na INFORMATION_SCHEMA.COLUMNS (podobnych do Czad Henderson), ale jest to dość śliski. –