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

Distinkt fejl med billedfelt

Billeddatatyper i en SELECT-sætning, der indeholder DISTINCT-udtrykket. Afhængigt af hvilken version af SQL Server, der bruges, er der et par måder at overvinde denne begrænsning på.

For SQL Server 2000 kan en TEXT-kolonne konverteres til en VARCHAR-datatype, en NTEXT-kolonne kan konverteres til en NVARCHAR-datatype, mens en IMAGE-datatype kan konverteres til VARBINARY-datatypen. SELECT-sætningerne tidligere, som indeholder DISTINCT-sætningen, kan omskrives som følger og undgå fejlmeddelelsen:

VÆLG DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(4000)) AS [BookSummary]FRA [dbo].[Book]

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(8000)) AS [BookImage]FROM [dbo].[Book]For SQL Server 2005 og SQL Server 2008 (og senere), i stedet for at begrænse NVARCHAR til 4000 tegn eller VARCHAR eller VARBINARY til 8000 tegn, kan MAX-specifikationen bruges i stedet for, som det kan ses i følgende SELECT-sætninger:

VÆLG DISTINCT [BookTitle], CAST([BookSummary] AS NVARCHAR(MAX)) AS [BookSummary]FRA [dbo].[Bog]

SELECT DISTINCT [BookTitle], CAST([BookImage] AS VARBINARY(MAX)) AS [BookImage]FROM [dbo].[Book]Hvis du bruger SQL Server 2005 eller SQL Server 2008 (eller nyere), en anden måde at overvinde denne begrænsning og denne fejlmeddelelse uden at bruge CAST- eller CONVERT-funktionen til at konvertere tekst-, ntext- og billeddatatyperne til henholdsvis varchar, nvarchar og varbinary, er at ændre kolonnernes datatyper til VARCHAR(MAX), NVARCHAR(MAX) og VARBINARY (MAX). TEXT, NTEXT og IMAGE datatyper vil blive fjernet i en fremtidig version af Microsoft SQL Server, og brug af disse datatyper bør undgås.

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




  1. Tilføjelse af millisekunder til en DateTime i TSQL INSERT INTO

  2. Sådan fjerner du de efterfølgende mellemrum efter månedens navn i Oracle

  3. Tilføjelse af flere datalagre til Microsoft Power BI

  4. Er der nogen måde at bruge json-objekter i SQL