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

Show:
Database System Support Status Since Version Notes
MySQL ✓ Supported 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 ✓ Supported 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 ✓ Supported 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 ✓ Supported all LENGTH() returns character count based on database character set. LENGTHB() returns byte length. LENGTHC() uses Unicode complete character count.
SQLite ✓ Supported 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: Since all PostgreSQL: Since all SQL Server: Since all Oracle: Since all SQLite: Since all

Per-Database Syntax & Notes

MySQL

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

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

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

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

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)