SUBSTR: Cómo extraer una subcadena

Cómo:

Lenguajes disponibles: informes

La función SUBSTR extrae una subcadena en base al lugar en que comienza y a su longitud, en la cadena de origen. SUBSTR puede modificar la posición de la subcadena en función de los valores de otros campos.

Existe una versión de la función SUBSTR que sólo está disponible en el lenguaje Maintain. Para más información acerca de esta función, consulte SUBSTR: Cómo extraer una subcadena (Maintain).


Principio de página

x
Sintaxis: Cómo Extraer una subcadena
SUBSTR(length, source_string, start, end, sublength, output)

donde:

length

Número entero

Es el número de caracteres de source_string, o un campo que contenga la longitud.

source_string

Alfanumérico

Es la cadena desde la que se va a extraer una subcadena, entre comillas simples, o el campo que contenga la cadena principal.

start

Número entero

Es la posición inicial de la subcadena dentro de la cadena de origen. Si start es inferior a uno o superior a length, la función devuelve espacios.

end

Número entero

Es la posición final de la subcadena. Si el argumento es inferior a start o superior a length, la función devuelve espacios.

sublength

Número entero

Es el número de caracteres de la subcadena (normalmente, end - start + 1). Si sublength es más larga que end - start +1, la subcadena se rellena con espacios finales. Si es más corta, la subcadena se trunca. Este valor debe ser la longitud declarada de output. Sólo se procesan los caracteres de sublength.

output

Alfanumérico

Es el campo al que se devuelve el resultado, o el formato del valor de salida entre comillas simples.



Ejemplo: Cómo extraer una cadena

POSIT determina la posición de la primera letra I en mayúscula, en LAST_NAME, y guarda el resultado en I_IN_NAME. A continuación, SUBSTR extrae tres caracteres, empezando por la letra I de LAST_NAME, y guarda los resultados en I_SUBSTR.

TABLE FILE EMPLOYEE
PRINT
COMPUTE 
    I_IN_NAME/I2 = POSIT(LAST_NAME, 15, 'I', 1, 'I2'); AND
COMPUTE
    I_SUBSTR/A3 = 
    SUBSTR(15, LAST_NAME, I_IN_NAME, I_IN_NAME+2, 3, I_SUBSTR);
BY LAST_NAME
WHERE DEPARTMENT EQ 'PRODUCTION'
END

La salida es:

LAST_NAME      I_IN_NAME  I_SUBSTR
---------      ---------  --------
BANNING                5  ING
IRVING                 1  IRV
MCKNIGHT               5  IGH
ROMANS                 0
SMITH                  3  ITH
STEVENS                0

Puesto que la letra I no aparece en los nombres de Romans y Stevens, SUBSTR extrae una cadena en blanco.


WebFOCUS