Friday, November 30, 2012

Argument data type ntext is invalid for argument ...

When you try to run a string function directly on a text or ntext column, in this example the "LEFT" function, you will get the following error:

*Argument data type ntext is invalid for argument 1 of left function.







*You will get a similar error for any of the string functions such as: REPLACE, LEFT, RIGHT, LTRIM, RTRIM, etc. 

Let's run an example for replicating the error:

--Create temporary table
create table #tblTest(
id int,
freeTxt ntext
);

--Enter sample data
insert into #tblTest
select 1,N'Testing ntext data type';


--Try to run the LEFT function on the ntext column directly
select ID,left(freeTxt,13) as StringSegment
from #tblTest


As you can see, the above statement returns the error message and cannot be executed.

Now let's try the following:


--Use casting
select ID,left(cast(freeTxt as varchar(max)),13) as StringSegment
from #tblTest

As you can see, the above T-SQL statement was successfully executed and returned the result of the LEFT string function.








The difference of the last statement from the one that returns an error is that now we have used casting prior to using the string function on the ntext column. So, in similar cases, whenever you want to run a string function on a text/ntext column, always cast/convert it first to varchar/nvarchar!!


--
My Latest Projects:


[Ad]
Easily secure your SQL Server instances! Try out DBA Security Advisor!
DBA Security Advisor for SQL Server by SQLArtBits
DBA Security Advisor was developed by SQLArtBits. The tool was being carefully developed for an entire year and it contains comprehensive security checks and recommendations based on proven SQL Server security best practices. Feel free to download and use the Community Edition which is free and if you find it useful, you can consider upgrading to the Enterprise Edition!

Artemakis Artemiou [MVP]

Author & Editor

Artemakis Artemiou is a Senior SQL Server Architect, Software Developer and Microsoft Data Platform MVP. He is also an author, regular blogger, president of Cyprus.NET User Group and CY Country leader of INETA-EU. He is also the creator of DBA Security Advisor and In-Memory OLTP Simulator. Artemakis is a frequent guest author of worldwide well-respected online journals where he writes articles focusing on many SQL Server topics.

Reference: The SQL Server and .NET Hub (http://www.sqlnethub.com)

0 comments: