En SQLite, substring()
es un alias para substr()
.
Devuelve una subcadena de una cadena, en función de una ubicación de inicio dada dentro de la cadena. Se requieren dos argumentos y se acepta un tercer argumento opcional.
La substring()
La nomenclatura se introdujo en SQLite 3.34.0, que se lanzó el 1 de diciembre de 2020. La razón por la que substring()
se introdujo la sintaxis para la compatibilidad con SQL Server.
Sintaxis
Ahora puede llamar a la función de cualquiera de las siguientes formas:
substr(X,Y,Z)
substr(X,Y)
substring(X,Y,Z)
substring(X,Y)
X
es la cadena completa que contiene la subcadena que desea devolver.Y
es la ubicación del primer carácter de la subcadena que desea devolver desde esa cadena.Z
es el número de caracteres que desea devolver. Si se omite, se devuelven todos los caracteres posteriores (a partir deY
).
Si X
es una cadena, entonces los índices de caracteres se refieren a caracteres UTF-8 reales. Si X
es un BLOB, entonces los índices se refieren a bytes.
Como se mencionó, el substring()
la sintaxis solo está disponible desde SQLite 3.34.0.
Ejemplo con 3 Argumentos
Aquí hay un ejemplo básico para demostrar cómo usar substring()
con tres argumentos.
SELECT substring('Dolemite', 3, 4);
Resultado:
lemi
Ejemplo con 2 Argumentos
Si omito el tercer argumento del ejemplo anterior obtengo el siguiente resultado.
SELECT substring('Dolemite', 3);
Resultado:
lemite
Punto de inicio negativo
Puede proporcionar un valor negativo para el segundo argumento. Cuando hace esto, el primer carácter de la subcadena se encuentra contando desde la derecha en lugar de desde la izquierda.
SELECT substring('Dolemite', -3);
Resultado:
ite
Aquí hay otro ejemplo, esta vez especifico la longitud de la subcadena.
SELECT substring('Dolemite', -7, 4);
Resultado:
olem
Entonces, los valores negativos tienen el mismo efecto que cuando se usa substring()
función en MySQL. MySQL también tiene un substr()
función, que es un sinónimo de su substring()
función.
Sin embargo, esto es diferente a cómo SQL Server trata los valores negativos. Cuando pasa un valor negativo a substring()
en SQL Server, simplemente comenzará a contar en un punto imaginario antes de que comience la cadena.
Longitud de subcadena negativa
El ejemplo anterior usó un punto de partida negativo. En este ejemplo, voy a usar una longitud negativa. Con esto quiero decir que proporcionaré un valor negativo para el tercer argumento.
SELECT substring('Dolemite', -1, -4);
Resultado:
emit
Por lo tanto, proporcionar un valor negativo para el tercer argumento da como resultado que se devuelvan los caracteres que preceden al punto de inicio.
Esto también se aplica cuando el segundo argumento es un valor positivo.
SELECT substring('Dolemite', 6, -4);
Resultado:
olem
Ejemplo de base de datos
Aquí hay un ejemplo que usa substring()
en una consulta de base de datos contra la base de datos de ejemplo de Chinook.
SELECT
substring(Name, 1, 10),
Name
FROM Artist
ORDER BY Name DESC
LIMIT 10;
Resultado:
substring(Name, 1, 10) Name ---------------------- --------------------------------- Zeca Pagod Zeca Pagodinho Youssou N' Youssou N'Dour Yo-Yo Ma Yo-Yo Ma Yehudi Men Yehudi Menuhin Xis Xis Wilhelm Ke Wilhelm Kempff Whitesnake Whitesnake Vinícius E Vinícius E Qurteto Em Cy Vinícius E Vinícius E Odette Lara Vinícius D Vinícius De Moraes & Baden Powell
En este caso, devolví los primeros diez caracteres del Name
columna. También devolví el contenido completo del Name
columna para comparar los resultados.