是否有一種「半可移植」方式來獲取整行的md5()或sha1()? (或者更好的是,在他們的所有領域排序的整組行中,即order by 1,2,3,...,n
)?不幸的是,並不是所有的數據庫都是PostgreSQL ......我必須處理至少微軟的SQL服務器,Sybase和Oracle。獲取整行MD5或SHA1的SQL方法
理想情況下,我想有一個聚合器(服務器端),並使用它來檢測行組中的更改。例如,在有一些時間戳列的表中,我想爲每個月存儲一個唯一的簽名。然後,我可以快速檢測自上次訪問(我將某些表映射到運行Greenplum的服務器)以來發生變化的月份,並重新加載這些月份。
我看過幾個選項,例如checksum(*)
在TSQL(恐怖:它是非常易於衝突的,因爲它是基於一串異或和32位值),並且hashbytes('MD5', field)
,但後者不能被施加到一整行。這將給我一個解決方案,只是我必須處理的SQL風格之一。
有什麼想法?即使只是上面提到的SQL成語中的一個,那也是很棒的。