LEFT

La función LEFT extrae un número determinado de caracteres desde el inicio (el lado izquierdo) de una cadena. Es la forma más directa de quedarse con el principio de un texto, y resulta muy útil para obtener iniciales, prefijos, generar códigos cortos o enmascarar datos sensibles.

Es importante destacar que LEFT trabaja por caracteres, no por bytes, así que cuenta correctamente las tildes y eñes sin partir un carácter multibyte por la mitad. Funcionalmente equivale a SUBSTRING empezando en la posición 1, pero su sintaxis es más corta y legible para este caso concreto, y por eso se prefiere cuando solo necesitas el comienzo de la cadena. En este artículo veremos su sintaxis, sus usos típicos, qué ocurre en los casos límite y su relación con SUBSTRING y RIGHT.

Sintaxis

LEFT recibe la cadena de origen y el número de caracteres que quieres extraer desde el principio.

LEFT(cadena, longitud)

Sus argumentos son:

  • cadena: la cadena de origen
  • longitud: número de caracteres a extraer desde la izquierda

Ejemplo básico

En su uso normal, devuelve los primeros caracteres indicados. Aquí se extraen los cinco primeros, que forman la palabra MySQL:

SELECT LEFT('MySQL Tutorial', 5) AS resultado;
resultado
MySQL

Lo mismo con cualquier otra longitud; los caracteres restantes simplemente se descartan:

SELECT LEFT('Hola mundo', 4) AS resultado;
resultado
Hola

Obtener iniciales

Pidiendo un solo carácter, LEFT devuelve la inicial de cada valor, algo útil para agrupar o indexar alfabéticamente:

SELECT nombre, LEFT(nombre, 1) AS inicial
FROM productos
LIMIT 5;
nombreinicial
iPhone 15 Proi
MacBook Air M2M
AirPods ProA
iPad Airi
Apple Watch Series 9A

Generar códigos de categoría

Combinando LEFT con UPPER se obtienen códigos cortos en mayúsculas a partir de un nombre, un patrón habitual para crear abreviaturas:

SELECT nombre, UPPER(LEFT(nombre, 3)) AS codigo
FROM categorias;
nombrecodigo
ElectrónicaELE
Accesorios electrónicosACC
Hogar inteligenteHOG
AudioAUD
FotografíaFOT

Agrupar por inicial

Una aplicación analítica interesante es contar cuántos valores empiezan por cada letra, usando LEFT como criterio de GROUP BY junto con COUNT:

SELECT LEFT(nombre, 1) AS inicial, COUNT(*) AS total
FROM productos
GROUP BY inicial
ORDER BY total DESC;

Casos límite: longitud mayor que la cadena

Conviene saber cómo se comporta LEFT cuando pides más caracteres de los que hay. En ese caso no falla ni rellena con espacios: simplemente devuelve la cadena completa, sin más:

SELECT LEFT('Hola', 100) AS resultado;
resultado
Hola

Y, como el resto de funciones de cadena, propaga el valor NULL: si la entrada es nula, el resultado también lo es:

SELECT LEFT(NULL, 5) AS resultado;
resultado
NULL

Enmascarar datos sensibles

Un uso práctico y muy frecuente es ocultar parte de un dato sensible, mostrando solo su comienzo. Combinando LEFT con CONCAT se revela el principio de un email y se sustituye el resto por asteriscos:

SELECT
    nombre,
    CONCAT(LEFT(email, 3), '***@***') AS email_oculto
FROM clientes
LIMIT 3;
nombreemail_oculto
Maríamar***@***
Carloscar***@***
Lauralau***@***

Esta técnica es útil para mostrar datos en interfaces o registros sin exponer la información completa, aunque para anonimización seria conviene combinarla con otras medidas.

LEFT, SUBSTRING y RIGHT

LEFT es uno de los tres atajos de extracción de MySQL, y conviene saber cómo se relacionan. LEFT toma el principio, RIGHT toma el final, y SUBSTRING es la versión general que extrae desde cualquier posición. De hecho, LEFT(cadena, n) es exactamente equivalente a SUBSTRING(cadena, 1, n); la versión LEFT solo es más concisa para este caso.

Errores comunes

El descuido más habitual es asumir que LEFT recorta o valida la longitud de la cadena. No hace ninguna de las dos cosas: si la cadena es más corta que la longitud pedida, la devuelve entera sin avisar, así que no sirve para garantizar un tamaño fijo. Para eso necesitarías rellenar el resultado con RPAD.

Otro punto a tener en cuenta es que, aunque LEFT cuenta caracteres y respeta UTF-8, el corte se hace por posición de carácter, no por palabras. Extraer "los primeros 6 caracteres" puede partir una palabra por la mitad, como se ve en los ejemplos. Si necesitas cortar por palabras completas, hay que combinarlo con funciones de búsqueda como INSTR.

Cuándo usar LEFT

LEFT es la elección natural siempre que necesites el principio de una cadena: iniciales, prefijos, códigos cortos o enmascarado de datos. Si lo que quieres es el final, usa RIGHT; y si necesitas extraer desde una posición intermedia o con más control, SUBSTRING es la opción completa.

En el siguiente artículo veremos RIGHT, que extrae caracteres desde el final de la cadena.

Escrito por Eduardo Lázaro