Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Erro distinto com campo de imagem


Tipos de dados de imagem em uma instrução SELECT que contém a cláusula DISTINCT. Dependendo da versão do SQL Server que está sendo usada, existem algumas maneiras de superar essa restrição.

Para o SQL Server 2000, uma coluna TEXT pode ser convertida em um tipo de dados VARCHAR, uma coluna NTEXT pode ser convertida em um tipo de dados NVARCHAR enquanto um tipo de dados IMAGE pode ser convertido em um tipo de dados VARBINARY. As instruções SELECT anteriores que contêm a cláusula DISTINCT podem ser reescritas da seguinte forma e evitar a mensagem de erro:

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]Para SQL Server 2005 e SQL Server 2008 (e posterior), em vez de limitar o NVARCHAR a 4000 caracteres ou o VARCHAR ou VARBINARY para 8000 caracteres, o especificador MAX pode ser usado em seu lugar, como pode ser visto nas seguintes instruções SELECT:

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]Se estiver usando SQL Server 2005 ou SQL Server 2008 (ou posterior), outra maneira de superar essa restrição e esta mensagem de erro sem usar a função CAST ou CONVERT para converter os tipos de dados text, ntext e image para varchar, nvarchar e varbinary, respectivamente, é alterar os tipos de dados das colunas para VARCHAR(MAX), NVARCHAR(MAX) e VARBINARY (MÁX.). Os tipos de dados TEXT, NTEXT e IMAGE serão removidos em uma versão futura do Microsoft SQL Server e o uso desses tipos de dados deve ser evitado.

Referência:http://www.sql-server-helper .com/error-messages/msg-421.aspx