不過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 1
asbegin
declare @n int, @i int, @j int
declare @b1 varbinary(8000), @b2 varbinary(8000)
set @n = 1
if datalength(@a1) <> datalength(@a2) -- different length
set @n = 0
else
begin
set @i = 0
set @j = (datalength(@a1) - 1) / 8000 + 1
while @i <= @j
begin
set @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 <> @b2
begin
set @n = 0
break
end
set @i = @i + 1
end
endreturn(@n)
endgo
內容來自本人qq空間於2009-6-17 16:10發表的日誌。。 網轉。
SQL Server中 image型別資料的比較
原文 sql server中 image型別資料的比較 不能比較或排序 text ntext 和 image 資料型別,除非使用 is null 或 like 運算子。不過image也是不支援like比較的。那怎麼樣對資料庫中的做比較呢。對於這種大型物件的處理,在oracle中有有專門的函式dbms...
C 操作SQL Server中的Image型別資料
該例子是乙個對sql server資料型別的乙個操作例子,具有寫入 讀取功能。1 準備資料庫 1 建立資料庫 test 2 建立表 table 1 分別有2個字段 id int photo image 如圖 2 用c 進行讀寫操作,完整 如下 using system using system.co...
C 操作SQL Server中的Image型別資料
該例子是乙個對sql server資料型別的乙個操作例子,具有寫入 讀取功能。1 準備資料庫 1 建立資料庫 test 2 建立表 table 1 分別有2個字段 id int photo image 如圖 2 用c 進行讀寫操作,完整 如下 csharp view plain copy print...