2014-06-27 21 views
0

我有包含圖像列的表。現在我想選擇不同的圖像列值,但它會給出錯誤。列名也是圖像。與圖像字段不同的錯誤

我的查詢是:選擇圖像從TBL1

錯誤是:圖像數據類型不能被選擇爲DISTINCT,因爲它是不可比的。

因此,如何在包含DISTINCT子句的SELECT語句從TB1表中選擇不同的值

+0

簡短的回答是你不能。爲什麼你的數據庫中有多個圖像數據副本? –

+0

這在每種意義上都是很有用的......爲什麼你會想要這種查詢呢?這確實是可能的,但你必須早晚排除這個查詢,它會非常緩慢......出於顯而易見的原因 – Leo

回答

0

圖像數據類型。根據所使用的SQL Server版本的不同,有幾種方法可以克服此限制。

對於SQL Server 2000,可以將TEXT列轉換爲VARCHAR數據類型,可以將NTEXT列轉換爲NVARCHAR數據類型,同時將IMAGE數據類型轉換爲VARBINARY數據類型。 SELECT DISTINCT [BookTitle],CAST([BookSummary] AS NVARCHAR(4000))AS [BookSummary] FROM [dbo] FROM DISTINCT子句可以重寫爲以下形式並避免錯誤消息:

[圖書]

SELECT DISTINCT [BOOKTITLE],CAST([BookImage] AS VARBINARY(8000))AS [BookImage] FROM [DBO]。[圖書] 對於SQL Server 2005和SQL Server 2008(及更高版本),而不是將NVARCHAR限制爲4000個字符,或者將VARCHAR或VARBINARY限制爲8000個字符,則MAX說明符可用於其位置,如以下SELECT語句中所示:

SELECT DISTINCT [BOOKTITLE],CAST([BookSummary] AS NVARCHAR(MAX))AS [BookSummary] FROM [DBO]。[圖書]

SELECT DISTINCT [BOOKTITLE],CAST([BookImage] AS VARBINARY( MAX))AS [BookImage] FROM [dbo]。[Book] 如果使用SQL Server 2005或SQL Server 2008(或更高版本),則另一種方法可以在不使用CAST或CONVERT函數進行轉換的情況下克服此限制和此錯誤消息文本,ntext和圖像數據類型分別爲varchar,nvarchar和varbinary,將列的數據類型更改爲VARCHAR(MAX),NVARCHAR(MAX)和VARBINARY(MAX)。 TEXT,NTEXT和IMAGE數據類型將在未來版本的Microsoft SQL Server中刪除,應避免使用這些數據類型。

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

+0

僅僅因爲一個人可以做一件事情,並不意味着一個人應該做那件事。 – STLDeveloper