与图像字段的明显错误

时间:2014-06-27 05:53:10

标签: sql-server-2012

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

我的查询是:从tbl1

中选择图片

错误是:无法将图像数据类型选为DISTINCT,因为它无法比较。

那么如何从tb1表中选择不同的值

1 个答案:

答案 0 :(得分:0)

包含DISTINCT子句的SELECT语句中的图像数据类型。根据所使用的SQL Server版本,有几种方法可以克服此限制。

对于SQL Server 2000,可以将TEXT列转换为VARCHAR数据类型,可以将NTEXT列转换为NVARCHAR数据类型,同时可以将IMAGE数据类型转换为VARBINARY数据类型。之前包含DISTINCT子句的SELECT语句可以按如下方式重写,并避免出现错误消息:

SELECT DISTINCT [BookTitle],CAST([BookSummary] AS NVARCHAR(4000))AS [BookSummary] 来自[dbo]。[书]

SELECT DISTINCT [BookTitle],CAST([BookImage] AS VARBINARY(8000))AS [BookImage] 来自[dbo]。[书] 对于SQL Server 2005和SQL Server 2008(及更高版本),可以在其位置使用MAX说明符,而不是将NVARCHAR限制为4000个字符或将VARCHAR或VARBINARY限制为8000个字符,如以下SELECT语句中所示:

SELECT DISTINCT [BookTitle],CAST([BookSummary] AS NVARCHAR(MAX))AS [BookSummary] 来自[dbo]。[书]

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

参考: http://www.sql-server-helper.com/error-messages/msg-421.aspx