เพื่อเปรียบเทียบ T1 (PK, A, B) และ T2 (PK, A, B)
ขั้นแรกให้เปรียบเทียบชุดคีย์หลักเพื่อค้นหาค่าคีย์ที่หายไปในด้านใดด้านหนึ่ง:
SELECT T1.*, T2.* FROM T1 FULL OUTER JOIN T2 ON T1.PK=T2.PK WHERE T1.PK IS NULL OR T2.PK IS NULL;
จากนั้นแสดงรายการค่าทั้งหมดไม่ตรงกัน:
SELECT T1.PK, 'A' AS columnName, T1.A AS leftValue, T2.A AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.A,0) != COALESCE(T2.A,0)
UNION ALL
SELECT T1.PK, 'B' AS columnName, T1.B AS leftValue, T2.B AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.B,0) != COALESCE(T2.B,0)
A และ B ต้องเป็นประเภทเดียวกัน คุณสามารถใช้แผนข้อมูลเพื่อสร้างการเลือก อย่าลืม COALESCE รวมผลลัพธ์ IS NULL ไว้ด้วย คุณยังสามารถใช้ FULL OUTER JOIN และ COALESCE (T1.PK, 0) = COALESCE (T2.PK, 0)
ตัวอย่างสำหรับคอลัมน์ประเภท varchar:
SELECT concat('SELECT T1.PK, ''', COLUMN_NAME, ''' AS columnName, T1.', COLUMN_NAME, ' AS leftValue, T2.', COLUMN_NAME, ' AS rightValue FROM T1 JOIN T2 ON T1.PK=T2.PK WHERE COALESCE(T1.',COLUMN_NAME, ',0)!=COALESCE(T2.', COLUMN_NAME, ',0)')
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME='T1' AND DATA_TYPE IN ('nvarchar','varchar');