sql >> Base de Datos >  >> RDS >> Sqlserver

Error distintivo con campo de imagen

Tipos de datos de imagen en una instrucción SELECT que contiene la cláusula DISTINCT. Dependiendo de la versión de SQL Server que se utilice, existen algunas formas de superar esta restricción.

Para SQL Server 2000, una columna TEXT se puede convertir a un tipo de datos VARCHAR, una columna NTEXT se puede convertir a un tipo de datos NVARCHAR mientras que un tipo de datos IMAGE se puede convertir a un tipo de datos VARBINARY. Las declaraciones SELECT anteriores que contienen la cláusula DISTINCT se pueden reescribir de la siguiente manera y evitar el mensaje de error:

SELECT DISTINCT [Título del libro], CAST([Resumen del libro] AS NVARCHAR(4000)) AS [Resumen del libro]FROM [dbo].[Libro]

SELECCIONE DISTINCT [Título del libro], CAST([Imagen del libro] AS VARBINARY(8000)) AS [Imagen del libro]FROM [dbo].[Libro]Para SQL Server 2005 y SQL Server 2008 (y versiones posteriores), en lugar de limitar NVARCHAR a 4000 caracteres o VARCHAR o VARBINARY a 8000 caracteres, el especificador MAX se puede usar en su lugar, como se puede ver en las siguientes declaraciones SELECT:

SELECCIONE DISTINCT [Título del libro], CAST([Resumen del libro] AS NVARCHAR(MAX)) AS [Resumen del libro]FROM [dbo].[Libro]

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book]Si usa SQL Server 2005 o SQL Server 2008 (o posterior), otra forma de superar esta restricción y este mensaje de error sin usar la función CAST o CONVERT para convertir los tipos de datos text, ntext e image a varchar, nvarchar y varbinary, respectivamente, es cambiar los tipos de datos de las columnas a VARCHAR(MAX), NVARCHAR(MAX) y VARBINARY (MÁX.). Los tipos de datos TEXT, NTEXT e IMAGE se eliminarán en una versión futura de Microsoft SQL Server y se debe evitar el uso de estos tipos de datos.

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