SQL Server中 image型別資料的比較

2021-09-08 19:14:09 字數 2088 閱讀 6210

原文:.sql server中 image型別資料的比較

不能比較或排序 text、ntext 和 image 資料型別,除非使用 is null 或 like 運算子。

不過image也是不支援like比較的。

那怎麼樣對資料庫中的做比較呢。

對於這種大型物件的處理,在oracle中有有專門的函式dbms_lob.compare,而sqlserver中沒有專門的處理函式,

只能通過使用substring函式一段一段的從image資料中擷取放到varbinary型別資料,最長8060位元組(8k),

然後再對varbinary型別資料進行比較。以下是乙個比較image的函式例子:

注意:區域性變數的型別是任何由系統提供的或使用者定義的資料型別。變數不能是 text、ntext 或 image 資料型別,請在查詢中直接使用。

/*

***** object: userdefinedfunction [dbo].[funccompareimage] script date: 2016-09-01 11:18:53 *****

*/set ansi_nulls on

goset quoted_identifier on

goalter

function

[dbo

].[funccompareimage

] ( @a1

image, @a2

image

)returns

int--

if match, return 1

asbegin

declare

@nint

,

@iint

,

@jint

;

declare

@b1varbinary(8000

) ,

@b2varbinary(8000

);

set@n=1

;

ifdatalength(@a1) <>

datalength(@a2) --

different length

set@n=0

;

else

begin

set@i=0

;

set@j

= ( datalength(@a1) -

1 ) /

8000+1

;

while

@i<=

@jbegin

set@b1

=substring(@a1, @i

*8000+1

,

case

@iwhen

@jthen

datalength(@a1) %

8000

else

8000

end);

set@b2

=substring(@a2, @i

*8000+1

,

case

@iwhen

@jthen

datalength(@a2) %

8000

else

8000

end);

if@b1

<>

@b2begin

set@n=0

;

break

;

end;

set@i=@i

+1;

end;

end;

return(@n

);

end;

SQL Server中 image型別資料的比較

不過image也是不支援like比較的。那怎麼樣對資料庫中的做比較呢。對於這種大型物件的處理,在oracle中有有專門的函式dbms lob.compare,而sqlserver中沒有專門的處理函式,只能通過使用substring函式一段一段的從image資料中擷取放到varbinary型別資料,最...

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...