sqlserver2005中的字段类型image对应java的pojo类里的啥类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sqlserver2005中的字段类型image对应java的pojo类里的啥类型相关的知识,希望对你有一定的参考价值。
参考技术A image数据类型是sqlserver中用来存贮变长的二进制数据,取值范围在跟int数据类型一样,所以在java中对应的数据类型可以是int本回答被提问者采纳 参考技术B 好久没用过了,应该是String 类型的吧追问不对
参考技术C image追问不对
.SQL Server中 image类型数据的比较
在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的函数例子:
那怎么样对数据库中的图片做比较呢。
对于这种大型对象的处理,在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 GO SET QUOTED_IDENTIFIER ON GO ALTER FUNCTION [dbo].[FuncCompareImage] ( @a1 IMAGE, @a2 IMAGE ) RETURNS INT -- if match, return 1 AS BEGIN 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; END; RETURN(@n); END;
以上是关于sqlserver2005中的字段类型image对应java的pojo类里的啥类型的主要内容,如果未能解决你的问题,请参考以下文章
仅使用 SQL 将图片插入 SQL Server 2005 图像字段
如何对sqlserver2005数据库中表字段进行加密,解密?