【问题标题】:DISTINCT keyword not working with Image data type in sql serverDISTINCT 关键字不适用于 sql server 中的图像数据类型
【发布时间】:2014-10-29 11:26:56
【问题描述】:

我在 SQL 查询中使用DISTINCT,同时使用以下查询从 SQL Server 表中获取记录。

SELECT  DISTINCT firstname, lastname, profileImage 
from employee

其中 profileImage 在我的表中属于 image 数据类型。

问题:

当我尝试在查询中使用 DISTINCT 从表中获取数据时,会出现以下错误。

Msg 421, Level 16, State 1, Line 1 图像数据类型不能是 选择为 DISTINCT,因为它不可比较。

当我从查询中删除 DISTINCT 关键字时,它可以正常工作。

为什么会这样?

【问题讨论】:

  • 自该产品的2005版本发布近10年以来,documentation已应用以下通知:“ntext, text, and image data类型将在 Microsoft SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序"
  • @Chris - 我理解错误消息,但我正在寻找另一种方法来实现这一点。因为我试图将 profileImage 字段转换为 varchar 但它也失败了:(
  • 转换为VARBINARY
  • @Prog - 当image 用于存储二进制 数据并且varbinary 类型存在时,您为什么要尝试转换为varchar
  • @Prog:啊,好的。那还不清楚。您问题中的实际问题是“为什么会发生这种情况?”从消息中可以清楚地看出这一点。你真正想要的对我来说更像是一种后续奖励。

标签: c# sql sql-server sql-server-2008


【解决方案1】:
  • IMAGE 数据类型是固定和可变长度的数据类型,用于 存储二进制数据,使用IMAGE数据的限制之一 type 是该数据类型定义的列不能用作一部分 在 SELECT 中使用 DISTINCT 会遇到包含 DISTINCT 子句错误消息的 SELECT 语句

  • IMAGE 数据类型可以转换为VARBINARY 数据类型。这 之前包含DISTINCT 子句的SELECT 语句可以 改写如下,避免报错:

    SELECT DISTINCT CAST([ProfileImage] AS VARBINARY(8000)) AS [ProfileImage]
    FROM [dbo].[table]
    

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

希望对你有帮助。

【讨论】:

  • 你好 SDK。虽然链接可能会回答问题链接,但只有答案不被接受。链接很好,但也将该页面的关键点放入您的答案中。这样,如果内容移动,或者他们的网站爆炸,您的答案仍然有用。
  • 谢谢,下次我会纠正我的错误,这是我的更新答案
  • 如何知道哪一列是图片?
猜你喜欢
  • 2011-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多