SUBSTRING es una función de manipulación de series de caracteres que manipula todos los datos de tipo serie de caracteres (BIT, BLOB y CHARACTER) y extrae caracteres de una serie de caracteres para crear otra serie de caracteres.
>>-SUBSTRING--(--ExpresiónOrigen--+- FROM --PosiciónInicio----+--> +- BEFORE --ExpresiónAntes--+ '- AFTER --ExpresiónDespués-' >--+----------------------+--)--------------------------------->< '- FOR --LongitudSerie-'
StartPosition
Si especifica StartPosition, SUBSTRING devuelve una serie de caracteres del mismo tipo que SourceExpression que contiene una secuencia de caracteres contiguos que se extraen de SourceExpression según lo especificado por StartPosition y StringLength. Si no especifica StringLength, la secuencia se ejecuta desde StartPosition hasta el final de SourceExpression. StartPosition puede ser negativa y, juntas, StartPosition y StringLength definen un rango. El resultado es el solapamiento de este rango y SourceExpression; StringLength no puede ser menor que StartPosition.
BeforeExpression
Si especifica BeforeExpression, SUBSTRING devuelve una nueva serie de caracteres del mismo tipo que SourceExpression que contiene una secuencia de caracteres contiguos que se extraen de los caracteres de StringLength antes de la primera aparición de BeforeExpression dentro de SourceExpression, hasta (pero sin incluirlo) el primer carácter de la primera aparición de BeforeExpression. Si no especifica StringLength, la secuencia de caracteres se toma del principio de SourceExpression hasta (pero sin incluirlo) el primer carácter de la primera aparición de BeforeExpression. Si la serie de caracteres de BeforeExpression no aparece en SourceExpression, se devuelve un serie de caracteres vacía (de longitud cero).
La serie de caracteres de BeforeExpression ha de ser del mismo tipo de datos que SourceExpression.
AfterExpression
Si especifica AfterExpression, SUBSTRING devuelve una nueva serie de caracteres del mismo tipo que SourceExpression, que contiene una secuencia de caracteres contiguos que se extraen de SourceExpression, empezando por el primer carácter que haya después del final de la primera aparición de AfterExpression hasta el final de SourceExpression (o caracteres de StringLength, si se especifican). Si la serie de caracteres AfterExpression no aparece en SourceExpression, se devuelve una serie de caracteres vacía (de longitud cero).
La serie de caracteres de AfterExpression ha de ser del mismo tipo de datos que SourceExpression.
Si cualquier parámetro es NULL, el resultado es NULL. Esta no es una serie de caracteres de longitud cero.
Ejemplos:
SUBSTRING('Hello World!' FROM 7 FOR 4)
devuelve
'Worl'.SUBSTRING('Hello World!' BEFORE 'World');
devuelve 'Hello
'.SUBSTRING('Hello World!' BEFORE 'World' FOR 3);
returns 'lo
'.SUBSTRING('Hello World!' BEFORE 'e');
returns 'H'.SUBSTRING('Hello World!' AFTER 'World');
devuelve '!'.SUBSTRING('Hello World!' AFTER 'W' FOR 2);
devuelve 'or'.SUBSTRING('Hello World!' AFTER 'P');
devuelve
''.