Sql server 2012 图像字段的明显错误

Sql server 2012 图像字段的明显错误,sql-server-2012,Sql Server 2012,我有一个包含图像列的表。现在我想选择image列的distinct值,但它给出了错误。列名也是图像 我的查询是:从tbl1中选择图像 错误是:由于图像数据类型不可比较,因此无法将其选择为“不同” 因此,如何在包含distinct子句的select语句中从tb1表中选择distinct值。根据所使用的SQL Server版本,有几种方法可以克服此限制 对于SQL Server 2000,文本列可以转换为VARCHAR数据类型,NTEXT列可以转换为NVARCHAR数据类型,而图像数据类型可以转换为

我有一个包含图像列的表。现在我想选择image列的distinct值,但它给出了错误。列名也是图像

我的查询是:从tbl1中选择图像

错误是:由于图像数据类型不可比较,因此无法将其选择为“不同”


因此,如何在包含distinct子句的select语句中从tb1表中选择distinct值。根据所使用的SQL Server版本,有几种方法可以克服此限制

对于SQL Server 2000,文本列可以转换为VARCHAR数据类型,NTEXT列可以转换为NVARCHAR数据类型,而图像数据类型可以转换为VARBINARY数据类型。前面包含DISTINCT子句的SELECT语句可以重写如下,以避免出现错误消息:

选择不同的[BookTitle],将([BookSummary]转换为NVARCHAR(4000))转换为[BookSummary] 来自[dbo].[Book]

选择DISTINCT[BookTitle],将([BookImage]转换为VARBINARY(8000))转换为[BookImage] 来自[dbo].[Book] 对于SQL Server 2005和SQL Server 2008(及更高版本),无需将NVARCHAR限制为4000个字符或将VARCHAR或VARBINARY限制为8000个字符,而是可以使用MAX说明符代替它,如以下SELECT语句所示:

选择不同的[BookTitle],将([BookSummary]转换为NVARCHAR(MAX))转换为[BookSummary] 来自[dbo].[Book]

选择DISTINCT[BookTitle],将([BookImage]转换为VARBINARY(MAX))转换为[BookImage] 来自[dbo].[Book] 如果使用SQL Server 2005或SQL Server 2008(或更高版本),克服此限制和此错误消息的另一种方法是将列的数据类型更改为varchar(MAX)、nvarchar(MAX),而不使用CAST或CONVERT函数将text、ntext和image数据类型分别转换为varchar、nvarchar和varbinary和VARBINARY(最大值)。文本、NTEXT和图像数据类型将在未来版本的Microsoft SQL Server中删除,应避免使用这些数据类型

参考:

简而言之,你不能。为什么您的数据库中有多个图像数据副本?这在任何意义上都很糟糕…为什么您可能需要这种查询?这确实是可能的,但你迟早会不得不放弃这个查询,因为它的速度会非常慢……原因很明显,只是因为一个人可以做一件事,并不意味着他应该做那件事。