一、首先要了解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...