Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Errore distinto con il campo dell'immagine

Tipi di dati immagine in un'istruzione SELECT che contiene la clausola DISTINCT. A seconda della versione di SQL Server in uso, esistono alcuni modi per superare questa restrizione.

Per SQL Server 2000, una colonna TEXT può essere convertita in un tipo di dati VARCHAR, una colonna NTEXT può essere convertita in un tipo di dati NVARCHAR mentre un tipo di dati IMAGE può essere convertito in un tipo di dati VARBINARY. Le istruzioni SELECT precedenti che contengono la clausola DISTINCT possono essere riscritte come segue ed evitare il messaggio di errore:

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

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]DA [dbo].[Book]Per SQL Server 2005 e SQL Server 2008 (e versioni successive), invece di limitare NVARCHAR a 4000 caratteri o VARCHAR o VARBINARY fino a 8000 caratteri, è possibile utilizzare l'identificatore MAX al suo posto, come si può vedere nelle seguenti istruzioni SELECT:

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

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]DA [dbo].[Book]Se si utilizza SQL Server 2005 o SQL Server 2008 (o versioni successive), un altro modo per superare questa restrizione e questo messaggio di errore senza utilizzare la funzione CAST o CONVERT per convertire i tipi di dati text, ntext e image rispettivamente in varchar, nvarchar e varbinary, consiste nel modificare i tipi di dati delle colonne in VARCHAR(MAX), NVARCHAR(MAX) e VARBINARY (MASSIMO). I tipi di dati TEXT, NTEXT e IMAGE verranno rimossi in una versione futura di Microsoft SQL Server e l'utilizzo di questi tipi di dati dovrebbe essere evitato.

Riferimento:http://www.sql-server-helper .com/messaggi-di-errore/msg-421.aspx