Why does STRLEN return the same value for all rows in my table?
You probably have a char column. Character type is padded with spaces. Consider the following example:
CREATE TABLE testlen
(
c1 char(5),
v1 varchar(5)
);
INSERT INTO TESTLEN values ('abcd', 'abcd')
select strlen(c1), strlen(v1) from TESTLEN;
Returns 5 for char column c1 and 4 for varchar column v1. This is because c1 actually contains 'abcd ', and not 'abcd'. See FAQ #237 for more details.
If you want to get the length of the data (without trailing spaces), you can trim the char column using TRIM or RTRIM function, like this:
select strlen(trim(c1)) from TESTLEN;