Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Erreur distincte avec le champ image

Types de données d'image dans une instruction SELECT qui contient la clause DISTINCT. Selon la version de SQL Server utilisée, il existe plusieurs façons de contourner cette restriction.

Pour SQL Server 2000, une colonne TEXT peut être convertie en type de données VARCHAR, une colonne NTEXT peut être convertie en type de données NVARCHAR tandis qu'un type de données IMAGE peut être converti en type de données VARBINARY. Les instructions SELECT précédentes qui contiennent la clause DISTINCT peuvent être réécrites comme suit et éviter le message d'erreur :

SELECT DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(4000)) AS [BookSummary]FROM [dbo].[Book]

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]FROM [dbo].[Book]Pour SQL Server 2005 et SQL Server 2008 (et versions ultérieures), au lieu de limiter le NVARCHAR à 4000 caractères ou le VARCHAR ou VARBINARY à 8000 caractères, le spécificateur MAX peut être utilisé à sa place, comme on peut le voir dans les instructions SELECT suivantes :

SELECT DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(MAX)) AS [BookSummary]FROM [dbo].[Book]

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book]Si vous utilisez SQL Server 2005 ou SQL Server 2008 (ou version ultérieure), une autre façon de surmonter cette restriction et ce message d'erreur sans utiliser la fonction CAST ou CONVERT pour convertir les types de données text, ntext et image en varchar, nvarchar et varbinary, respectivement, consiste à changer les types de données des colonnes en VARCHAR(MAX), NVARCHAR(MAX) et VARBINARY (MAX). Les types de données TEXT, NTEXT et IMAGE seront supprimés dans une future version de Microsoft SQL Server et l'utilisation de ces types de données doit être évitée.

Référence :http://www.sql-server-helper .com/error-messages/msg-421.aspx