SQL Server ->> 校檢函數CHECKSUM、CHECKSUM_AGG、BINARY_CHECKSUM和HASHBYTES

來源:互聯網
上載者:User

標籤:

今天特地查了一下SQL Server下的校檢函數有哪些。原本我只是在工作中用過一個CHECKSUM,今天特地學習了一下才發現原來還有其他的校檢函數。

這裡找到了別人對於SQL SERVER下這幾個校檢函數的學習總結,藉此機會學習下別人的學習成果

http://bbs.51cto.com/thread-1145105-1.html

 

CHECKSUM和BINARY_CHECKSUM
  • CHECKSUM和BINARY_CHECKSUM都是可以針對錶中一行的單列或者多列又或是運算式產生資料類型為INT的校檢值。
  • 不同的地方是BINARY_CHECKSUM是轉成了二進位後產生的校檢值。
  • 並不是所有的資料類型都可以用到CHECKSUM或BINARY_CHECKSUM上的。BINARY_CHECKSUM 在計算中忽略具有不可比資料類型的列。 不可比資料類型包括 text、ntext、image、cursor、xml 和不可比公用語言運行庫 (CLR) 使用者定義的類型。
  • MSDN上講到BINARY_CHECKSUM 可用於檢測表中行的更改。但是也提到BINARY_CHECKSUM(*) 將為大多數(但不是全部)行更改返回不同的值,並可用於檢測大多數行修改。
  • 因為校檢值是一個INT,根據INT的數值分布[-2147483648,2147483647],如果某長表中的行數大於2億估計就會出現重複的情況了。這點在以前工作中就碰到過。
  • CHECKSUM和BINARY_CHECKSUM的不同是:1)CHECKSUM是不區分大小寫。它認為Jerry和jerry是同樣的校檢值;2)如果兩個運算式具有相同的類型和位元組表示,那麼對於 BINARY_CHECKSUM 將返回相同的值。例如,BINARY_CHECKSUM 對於“2Volvo Director 20”和“3Volvo Director 30”將會返回相同的值。這段參考了http://ultrasql.blog.51cto.com/9591438/1607407

 

CHECKSUM_AGG

這個是個彙總函式。返回組中各值的校正和。 將忽略 Null 值。 後面可以跟隨 OVER 子句。CHECKSUM_AGG 用於檢測表中的更改。如果運算式列表中的某個值發生更改,則列表的校正和通常也會更改。 但只在極少數情況下,校正和會保持不變。很多情況下這個函數應該是用來檢測表的資料是否有改動或者表的某個欄位的資料是否有發生改動。

 

HASHBYTES返回其在 SQL Server 中的輸入的 MD2、MD4、MD5、SHA、SHA1 或 SHA2 雜湊值。可以用MD5替換CHECKSUM或BINARY_CHECKSUM避免重複。但是效能上可能有所下降。

 

SQL Server ->> 校檢函數CHECKSUM、CHECKSUM_AGG、BINARY_CHECKSUM和HASHBYTES

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.