sql >> Database >  >> RDS >> Sqlserver

Duidelijke fout met afbeeldingsveld

Afbeeldingsgegevenstypen in een SELECT-instructie die de DISTINCT-clausule bevat. Afhankelijk van de versie van SQL Server die wordt gebruikt, zijn er een paar manieren om deze beperking te omzeilen.

Voor SQL Server 2000 kan een TEXT-kolom worden geconverteerd naar een VARCHAR-gegevenstype, een NTEXT-kolom kan worden geconverteerd naar een NVARCHAR-gegevenstype, terwijl een IMAGE-gegevenstype kan worden geconverteerd naar VARBINARY-gegevenstype. De eerdere SELECT-instructies die de clausule DISTINCT bevatten, kunnen als volgt worden herschreven en de foutmelding vermijden:

SELECTEER 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]Voor SQL Server 2005 en SQL Server 2008 (en later), in plaats van de NVARCHAR te beperken tot 4000 tekens of de VARCHAR of VARBINARY tot 8000 tekens, de MAX-specificatie kan op zijn plaats worden gebruikt, zoals te zien is in de volgende SELECT-instructies:

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

SELECTEER DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book]Als u SQL Server 2005 of SQL Server 2008 (of later) gebruikt, is er een andere manier om deze beperking te omzeilen en deze foutmelding zonder de CAST- of CONVERT-functie te gebruiken om de tekst-, ntext- en afbeeldingsgegevenstypen naar respectievelijk varchar, nvarchar en varbinary te converteren, is om de gegevenstypen van de kolommen te wijzigen in VARCHAR(MAX), NVARCHAR(MAX) en VARBINARY (MAX.). De gegevenstypen TEXT, NTEXT en IMAGE worden verwijderd in een toekomstige versie van Microsoft SQL Server en het gebruik van deze gegevenstypen moet worden vermeden.

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




  1. Prestaties van XA versus niet-XA JDBC-stuurprogramma's?

  2. De verbinding tot stand brengen van Script Task (VB) naar OLEDB Connection Manager van SSIS Package

  3. MySQL krijgt de eerste niet-null-waarde na groeperen door

  4. De prestaties van MySQL Insert nemen af ​​op een grote tafel