原文:.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...