Cadenasestándar SQL

SUBSTRING

Extrae una parte de una cadena: desde la posición y con la longitud que necesites.

Sintaxis

SUBSTRING(<texto> FROM <inicio>)
SUBSTRING(<texto> FROM <inicio> FOR <longitud>)
SUBSTRING(<texto>, <inicio>, <longitud>)

Las posiciones se cuentan desde 1. FROM indica en qué carácter empezar y FOR, cuántos caracteres tomar; sin FOR se toma todo hasta el final. La forma con comas hace lo mismo.

Datos para los ejemplos

employees

namedepartmentsalarybonusphone
Emmabackend1200300+44 7700 900123
Liambackend1000NULLNULL
Oliviafrontend1350150+44 7700 900456
Noahfrontend950NULL+44 7700 900789
Sophiadesign1200200NULL

Estas tablas ya están creadas en el entorno de pruebas y los ejemplos de abajo las usan. ¿Quieres repetirlo en tu propia base de datos? Copia el SQL.

Partes de una palabra
SELECT SUBSTRING('database' FROM 1 FOR 4) AS first_part,
SUBSTRING('database' FROM 5) AS rest;
first_partrest
database
La inicial del nombre
SELECT name,
SUBSTRING(name FROM 1 FOR 1) AS initial
FROM employees;
nameinitial
EmmaE
LiamL
OliviaO
NoahN
SophiaS
El prefijo del país en el teléfono
SELECT name, phone,
SUBSTRING(phone FROM 1 FOR 3) AS country_code
FROM employees;
namephonecountry_code
Emma+44 7700 900123+44
LiamNULLNULL
Olivia+44 7700 900456+44
Noah+44 7700 900789+44
SophiaNULLNULL

Donde no hay teléfono, el resultado también es NULL.

Ten en cuenta

Las posiciones empiezan en 1, no en 0. SUBSTRING('abc' FROM 0 FOR 2) devuelve solo a: no existe un carácter «cero», pero ocupa un lugar en la longitud.

FOR es una longitud, no la posición final: SUBSTRING('database' FROM 5 FOR 3) da bas.

Si en lugar de un número pasas un patrón, SUBSTRING busca con una expresión regular: SUBSTRING('order #1234' FROM '[0-9]+') da 1234.

Funciones relacionadas