Return the number of characters (or bytes) in a string.

Returns the number of characters (or bytes, in some databases) in a string. CHARACTER_LENGTH, CHAR_LENGTH, LEN, and LENGTH have slight differences across databases. NULL input returns NULL.

Compatibility

Filter by Database
SQL LENGTH Compatibility Across Databases
Database System Support Status Since Version Notes
MySQL Native all LENGTH() returns byte length (important for multi-byte UTF-8 strings). CHAR_LENGTH() / CHARACTER_LENGTH() returns character count. For emoji/CJK text, use CHAR_LENGTH().
PostgreSQL Native all LENGTH() returns character count (not bytes) for text/varchar. OCTET_LENGTH() returns byte length. BIT_LENGTH() returns bit count. For bytea columns, LENGTH() returns byte count.
SQL Server Native all LEN() returns character count, excluding trailing spaces. DATALENGTH() returns byte length (NVARCHAR = 2 bytes per char). LEN() does NOT count trailing spaces — use DATALENGTH() if that matters.
Oracle Native all LENGTH() returns character count based on database character set. LENGTHB() returns byte length. LENGTHC() uses Unicode complete character count.
SQLite Native all LENGTH() returns character count for TEXT values. For BLOB values, returns byte count. SQLite stores text as UTF-8 or UTF-16 internally.

Details

The biggest trap: SQL Server uses LEN() not LENGTH() and silently ignores trailing spaces. MySQL's LENGTH() returns bytes, not characters — always use CHAR_LENGTH() for multi-byte text in MySQL. PostgreSQL and SQLite's LENGTH() correctly returns character count.

Standard Syntax

SELECT LENGTH(column) FROM tbl;

Version Support

MySQL: Native in all listed versions PostgreSQL: Native in all listed versions SQL Server: Native in all listed versions Oracle: Native in all listed versions SQLite: Native in all listed versions

Per-Database Syntax & Notes

MySQL Native syntax

LENGTH() returns byte length (important for multi-byte UTF-8 strings). CHAR_LENGTH() / CHARACTER_LENGTH() returns character count. For emoji/CJK text, use CHAR_LENGTH().

SELECT LENGTH('hello'); -- 5 SELECT LENGTH('caf\u00e9'); -- 5 bytes (UTF-8: 'é' = 2 bytes) → 6 SELECT CHAR_LENGTH('caf\u00e9'); -- 4 characters

PostgreSQL Native syntax

LENGTH() returns character count (not bytes) for text/varchar. OCTET_LENGTH() returns byte length. BIT_LENGTH() returns bit count. For bytea columns, LENGTH() returns byte count.

SELECT LENGTH('hello'); -- 5 SELECT LENGTH('café'); -- 4 (characters) SELECT OCTET_LENGTH('café'); -- 5 (bytes in UTF-8)

SQL Server Native syntax

LEN() returns character count, excluding trailing spaces. DATALENGTH() returns byte length (NVARCHAR = 2 bytes per char). LEN() does NOT count trailing spaces — use DATALENGTH() if that matters.

SELECT LEN('hello'); -- 5 SELECT LEN('hello '); -- 5 (trailing spaces ignored) SELECT DATALENGTH(N'hello'); -- 10 (NVARCHAR: 2 bytes/char)

Oracle Native syntax

LENGTH() returns character count based on database character set. LENGTHB() returns byte length. LENGTHC() uses Unicode complete character count.

SELECT LENGTH('hello') FROM DUAL; -- 5 SELECT LENGTHB('café') FROM DUAL; -- 5 (bytes) SELECT LENGTH('café') FROM DUAL; -- 4 (chars)

SQLite Native syntax

LENGTH() returns character count for TEXT values. For BLOB values, returns byte count. SQLite stores text as UTF-8 or UTF-16 internally.

SELECT LENGTH('hello'); -- 5 SELECT LENGTH('café'); -- 4 (characters)