判断两个图片是否相同
2012-12-31 14:06
429 查看
--自定义函数:
if object_id('tablename') is not null drop table tablename
create table tablename
(id int identity(1, 1),
a1 image,
a2 image)
go
insert into tablename(a1, a2) select 'aaa', 'aaa'
insert into tablename(a1, a2) select 'bbb', 'bba'
insert into tablename(a1, a2) select 'ccc', 'ccc'
insert into tablename(a1, a2) select 'ddd', 'ddc'
--------------------------------------------------------------------------------
if object_id('Compare_Image') is not null drop function Compare_Image
go
create function Compare_Image(@a1 image, @a2 image) returns int
as
begin
declare @n int, @i int, @j int
declare @b1 varbinary(8000), @b2 varbinary(8000)
set @n = 1
if datalength(@a1) <> datalength(@a2) --长度不同
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
end
return(@n)
end
go
select * from tablename where dbo.Compare_Image(a1, a2) = 1
/*
id a1 a2
1 0x616161 0x616161
3 0x636363 0x636363
*/
drop function Compare_Image
--------------------------------------------------------------------------------
drop table tablename
if object_id('tablename') is not null drop table tablename
create table tablename
(id int identity(1, 1),
a1 image,
a2 image)
go
insert into tablename(a1, a2) select 'aaa', 'aaa'
insert into tablename(a1, a2) select 'bbb', 'bba'
insert into tablename(a1, a2) select 'ccc', 'ccc'
insert into tablename(a1, a2) select 'ddd', 'ddc'
--------------------------------------------------------------------------------
if object_id('Compare_Image') is not null drop function Compare_Image
go
create function Compare_Image(@a1 image, @a2 image) returns int
as
begin
declare @n int, @i int, @j int
declare @b1 varbinary(8000), @b2 varbinary(8000)
set @n = 1
if datalength(@a1) <> datalength(@a2) --长度不同
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
end
return(@n)
end
go
select * from tablename where dbo.Compare_Image(a1, a2) = 1
/*
id a1 a2
1 0x616161 0x616161
3 0x636363 0x636363
*/
drop function Compare_Image
--------------------------------------------------------------------------------
drop table tablename
相关文章推荐
- 判断其他图片是否与给定的两个图的内容是否相同
- 判断两个字符串是否由相同的字符组成
- Android难题 :如何判断两个PendingIntent是否相同?
- 如何判断两个数字的奇偶性是否相同。
- C++ 判断一幅图片中的两个矩形区域是否邻近
- 华为机试题-判断一个数字中是否包含两个相同的子串
- 判断两个字符串是否由相同字符组成
- 判断两个有序数组中是否存在相同的数字
- opencv_判断两张图片是否相同
- Java 判断两个文件是否相同的两种方法
- 判断两个日期是否相同
- 判断两个二叉树是否结构相同
- 如何快速的判断两个string中是否含有相同的字符
- 判断两个有序数组中是否有相同的数字
- Java判断两个二叉树是否相同
- 判断UIImageView中图片是否相同
- 判断两个数组的元素是否相同,把相同的去掉
- java 判断两个字符串是否由相同的字符组成 排序算法 空间换时间的方法
- 比较两个图片是否相同
- 编写一个函数,判断两个字符串是否是是相互打乱的,也就是说它们有着相同的字符,但是对应不同的顺序。