Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Deutlicher Fehler mit Bildfeld

Bilddatentypen in einer SELECT-Anweisung, die die DISTINCT-Klausel enthält. Abhängig von der verwendeten Version von SQL Server gibt es einige Möglichkeiten, diese Einschränkung zu umgehen.

Für SQL Server 2000 kann eine TEXT-Spalte in einen VARCHAR-Datentyp konvertiert werden, eine NTEXT-Spalte kann in einen NVARCHAR-Datentyp konvertiert werden, während ein IMAGE-Datentyp in einen VARBINARY-Datentyp konvertiert werden kann. Die früheren SELECT-Anweisungen, die die DISTINCT-Klausel enthalten, können wie folgt umgeschrieben werden und vermeiden die Fehlermeldung:

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]Für SQL Server 2005 und SQL Server 2008 (und höher), anstatt NVARCHAR auf 4000 Zeichen zu beschränken oder VARCHAR oder VARBINARY auf 8000 Zeichen, der MAX-Bezeichner kann an seiner Stelle verwendet werden, wie in den folgenden SELECT-Anweisungen zu sehen ist:

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]Wenn Sie SQL Server 2005 oder SQL Server 2008 (oder höher) verwenden, eine andere Möglichkeit, diese Einschränkung zu umgehen und Diese Fehlermeldung ohne Verwendung der CAST- oder CONVERT-Funktion zum Konvertieren der text-, ntext- und image-Datentypen in varchar, nvarchar bzw. varbinary besteht darin, die Datentypen der Spalten in VARCHAR(MAX), NVARCHAR(MAX) und VARBINARY zu ändern (maximal). Die Datentypen TEXT, NTEXT und IMAGE werden in einer zukünftigen Version von Microsoft SQL Server entfernt und die Verwendung dieser Datentypen sollte vermieden werden.

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