sql語句查兩個表的列是否一致

2022-07-12 06:24:08 字數 1778 閱讀 8414

一、首先要了解sqlserver 中系統表物件及表結構查詢的函式:

sysobjects、syscolumns以及函式object_id

1.sysobjects——  系統物件表。 儲存當前資料庫的物件,如約束、預設值、日誌、規則、儲存過程等

注:重要字段需要解釋的是 xtype,他的資料字段內容分別表示為:

c = check 約束

d = 預設值或 default 約束

f = foreign key 約束

fn = 標量函式

if = 內嵌表函式

k = primary key 或 unique 約束

l = 日誌

p = 儲存過程

r = 規則

rf = 複製篩選儲存過程

s = 系統表

tf = 表函式

tr = 觸發器

u = 使用者表

v = 檢視

x = 擴充套件儲存過程

2.sysolumns—— 當前資料庫的所有表裡面建立的字段都保留在裡面

注:sql中的sysobjects 的id與syscolumns 的id 存在主鍵關係,即 syscolumns 中的id欄位是 sysobjects 表的主鍵對應值(查詢時: select name from syscolumns where id=(select id from sysobjects where name='表名')

3.object_id('表名')—— 函式表示直接取表物件的id值。此方法返回資料庫物件標識號

注:查詢時:  select name from syscolumns where  id =object_id('tb')  等同於上述查詢

二、比較同一資料庫中兩個表的對應欄位的差異(當兩個表結構一樣時,查詢表對應的字段是否一致)

select * from (

select name

from syscolumns

where id=(

select id from sysobjects

where name='表名1')

) t1

full outer join(

select name from syscolumns

where id=(

select id from sysobjects

where name='表名2')

) t2 on t1.name=t2.name

where t1.name is null or t2.name is null

三、比較在不同資料庫中兩個表的對應欄位的差異(當兩個表結構一樣時,查詢表對應的字段是否一致)

select * from (

select name

from gxjmxy.dbo.syscolumns

where id=(

select id from gxjmxy.dbo.sysobjects

where name='tb1')

) t1 full outer join(

select name from test.dbo.syscolumns

where id=(

select id from test.dbo.sysobjects

where name='tb'

)) t2 on t1.name=t2.name

where t1.name is null or t2.name is null

驗證兩個檔案是否一致

我們常常要驗證兩個檔案是否一致,只需測試兩個檔案的md5是否一致即可。python程式如下 usr bin python coding utf 8 import hashlib import sys def gethash f line f.readline hash hashlib.md5 whi...

比對兩個表的賬單是否一致

sql code 查詢兩個表結構相同,內容之間的差異!insert update,delete create table a 銀行卡號 varchar 5 金額 int,日期 datetime 交易號 varchar 100 insert into aselect x1 100 getdate 00...

sql語句比較新舊兩個表資料中資料的一致性

select a.callingcode,a.calledcode,a.calldate,a.calltime,a.billtype,a.money,b.callingcode,b.calledcode,b.calldate,b.calltime,b.billtype,b.money from bi...