Để biết nếu bạn có các cột tương tự có khả năng có thể là phức tạp hơn so với các giải pháp khác đề nghị. Chúng tôi có thể nghĩ rằng hai cột giống nhau vì chúng có chung tên nhưng trong thực tế khi bạn làm việc trong một cơ sở dữ liệu lớn với nhiều người tạo, xóa và/hoặc thay đổi cấu trúc dữ liệu không nhất quán có thể xảy ra.
Càng nhiều thông số chúng tôi kiểm tra tính tương tự, chúng tôi càng tự tin rằng các cột của chúng tôi tương tự nhau mà không cần kiểm tra thủ công dữ liệu thô.
1. Trước tiên, tôi đề nghị bạn chạy truy vấn để hiểu các tham số của một cột nhất định.
SELECT
*
FROM
DATABASENAME.INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = N'TABLE1'
Điều này sẽ trả về một số cột dữ liệu meta trên các cột trong bảng. Một số dữ liệu meta tôi thấy thú vị cho tính duy nhất bao gồm ...
2. Trong trường hợp của tôi, tôi đã xác định các thuộc tính của cột COLUMN_NAME, IS_NULLABLE, AND DATA_TYPE
để xác định xem cột của tôi thực sự phù hợp.
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. Khái niệm Kiểm tra ... Có lẽ nếu khi chúng ta chỉ sử dụng JOIN
COLUMN_NAME
có 10 cột phù hợp. Có thể khi chúng tôi JOIN
sử dụng COLUMN_NAME AND DATA_TYPE
có 7 cột phù hợp. Có lẽ khi chúng ta sử dụng cả ba điều kiện như trong ví dụ trên có 4 cột phù hợp. Có nghĩa là bạn chỉ có thể THAM GIA trên 4 cột phù hợp ... hoàn toàn không. Điều đó có nghĩa là bạn sẽ cần phải xem xét làm thế nào để xử lý lỗi và đúc lỗi tùy thuộc vào cách bạn dự định JOIN các bảng. Điểm đang được thực hiện cẩn thận JOIN
trên INFORMATION_SCHEMA.COLUMNS.COLUMN_NAME
vì kết quả của bạn có thể không được dự định.
Nguồn
2015-12-23 19:13:54
tôi sẽ đề nghị một tự tham gia vào bảng information_schema (tương tự như Chad Henderson), nhưng điều này là khá trơn. –