Getting the length of an ntext field in T-SQL (MSSQL)
When querying the length of a string field in SQL, the normal go-to is the LEN()
function. If the field you’re querying has the datatype ntext
you’ll likely run into the following error:
Argument data type ntext is invalid for argument 1 of len function.
Problem
You can’t use LEN()
on an ntext
field.
In the query below, the Comments
column has the datatype ntext
.
If you run this query…
SELECT
COUNT(0)
FROM
CustomerReview
WHERE
LEN(Comments) > 5
You’ll get the following error:
Argument data type ntext is invalid for argument 1 of len function.
Solution
To get the length of an ntext
field, use DATALENGTH()
instead of LEN()
. Note that DATALENGTH
will return the number of bytes, not the number of characters in the string. Each character in an ntext
field is 2 bytes, so you need to take this into account when writing your query.
SELECT
COUNT(0)
FROM
CustomerReview
WHERE
DATALENGTH(Comments) > 10
Note that the predicate is now DATALENGTH(Comments) > 10
as there’s 2 bytes per character, so you have to double the length in the predicate.