If the tables are using surrgate keys for primary key, this approach can lead misleading results. Think of the case where the PK's are integer numbers starting at 1. Completely dissimilar and unrelated tables could have matching values.
Regardless, if you want to compare columns from two tables and see what percentage matches, you can do the following:
100.0*SUM(CASE WHEN a.colA IS NOT NULL AND b.colB IS NOT NULL THEN 1 ELSE 0 END) /NULLIF(COUNT(b.colB),0) AS AHasMatchesForB,
100.0*SUM(CASE WHEN a.colA IS NOT NULL AND b.colB IS NOT NULL THEN 1 ELSE 0 END) /NULLIF(COUNT(a.colA),0) AS BHasMatchesForA
FULL JOIN TableA b ON a.colA = b.colB;
You could use dynamic SQL with ms_sp_MSforeachtable to go through all combinations of tables.