Foutmelding SQL Server bij gebruik TEXT en NTEXT

01-03-2013 | Marcel van Langen | SQL Server | sql, server, foutmelding, 306, null, like, ntext, text

Wil je een veld van het type TEXT of NTEXT (of een image data type) gebruiken om te sorteren of te vergelijken, dan is dat in beginsel in SQL Server niet mogelijk. Erg vervelend, want dit zal ongetwijfeld soms nodig zijn. Gelukkig is er een mogelijkheid! In dit korte artikel laten we zien in welke situatie deze foutmelding zich kan voordoen, en natuurlijk wat je eraan kunt doen!

Je kunt deze foutmelding krijgen als je een TEXT, NTEXT of IMAGE type veld opneemt in je ORDER BY. Stel dat je een tabel genaamd MEDEWERKERS hebt, en je slaat in het veld MED_ACHTERGROND (van het type TEXT) gegevens over de medewerker op. In dat geval zou de volgende query een foutmelding opleveren:

SELECT med_id,
med_naam
FROM medewerkers
ORDER BY med_achtergrond ASC

Dit levert je de volgende foutmelding op:

The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.

Dezelfde foutmelding zou ook verschijnen als je het veld MED_ACHTERGROND zou gebruiken om een GROUP BY te doen:

SELECT med_achtergrond,
COUNT(med_id) AS aantalMedewerkers
FROM medewerkers
GROUP BY med_achtergrond

Ook dit zou de betreffende foutmelding opleveren. Belangrijke vraag is nu natuurlijk: hoe los je het op. Daarvoor zijn twee belangrijke manieren:

  • Converteer de velden naar VARCHAR of NVARCHAR. Zo zou je de volgende statement

    ORDER BY med_achtergrond ASC

    uit de eerste query vervangen door

    ORDER BY CAST(Summary AS NVARCHAR(MAX))

    In de tweede query zou je

    GROUP BY med_achtergrond'

    vervangen door

    GROUP BY CAST(Summary AS NVARCHAR(MAX)).
  • Gebruik helemaal geen TEXT, NTEXT of IMAGE meer in je database model. Stap over op op VARCHAR(MAX), NVARCHAR(MAX) en VARBINARY(MAX). Probleem opgelost!

Over Morloff

Morloff ontwerpt en realiseert succesvolle webtoepassingen op het gebied van procesoptimalisatie, eCommerce en rapportage door de inzet van moderne webtechnieken, sociale media en zoekmachine optimalisatie.

over ons | diensten | portfolio | contact | route

naar website IJsmonster.nl naar website ICT intermediairs naar website marcelvanlangen.com

Twitter

Morloff

Cuneraweg 169a
3911 RH Rhenen

M +31 (0)6 - 515 96 189
W www.morloff.nl
E contactformulier

Morloff op Twitter Morloff op Facebook Morloff op LinkedIn Morloff via RSS