.SQL Server中 image類型資料的比較

來源:互聯網
上載者:User
在SQL Server中如果你對text、ntext或者image資料類型的資料進行比較。將會提示:不能比較或排序 text、ntext 和 image 資料類型,除非使用 IS NULL 或 LIKE 運算子。不過image也是不支援like比較的。
那怎麼樣對資料庫中的圖片做比較呢。
對於這種大型物件的處理,在Oracle中有有專門的函數DBMS_LOB.COMPARE,而SQLSERVER中沒有專門的處理函數,
只能通過使用substring函數一段一段的從image資料中截取放到varbinary類型資料,最長8060位元組(8k),
然後再對varbinary類型資料進行比較。以下是一個比較image的函數例子:
IF object_id('compare_image') IS NOT NULL DROP FUNCTION compare_imageGOcreate function compare_image(@a1 image, @a2 image) returns int-- if match, return 1asbegindeclare @n int, @i int, @j intdeclare @b1 varbinary(8000), @b2 varbinary(8000)set @n = 1if datalength(@a1) <> datalength(@a2) -- different lengthset @n = 0elsebeginset @i = 0set @j = (datalength(@a1) - 1) / 8000 + 1while @i <= @jbeginset @b1 = substring(@a1, @i * 8000 + 1, case @i when @j then datalength(@a1) % 8000 else 8000 end)set @b2 = substring(@a2, @i * 8000 + 1, case @i when @j then datalength(@a2) % 8000 else 8000 end)if @b1 <> @b2beginset @n = 0breakend set @i = @i + 1end endreturn(@n)endgo 

 

內容來自本人QQ空間於2009-6-17 16:10發表的日誌。。 網轉。

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.