Función MAP( )

Regresa un valor lógico que indica si una cadena de caracteres coincide con una cadena de formato específico que contiene caracteres comodín, caracteres literales, o ambos.

Sintaxis

MAP(cadena; formato)

Parámetros

Nombre Tipo Descripción
cadena

carácter

El campo, la expresión o el valor literal que se debe probar en busca de coincidencias.
formato

carácter

El patrón de datos o la cadena de caracteres que desea comparar con la cadena.

El formato puede tener caracteres comodín, caracteres literales o una combinación de ambos:

"\9\9\9-999-9999"

Se admiten los siguientes caracteres comodín:

  • "X": Coincide con cualquier carácter alfabético (a-z, A-Z, caracteres europeos). Este carácter comodín no distingue entre mayúsculas o minúsculas. Puede usar "X" o "x"
  • "9": Coincide con cualquier número (0-9)
  • "!": Coincide con cualquier carácter que no esté en blanco
  • "?": Coincide con cualquier carácter, incluidos los espacios en blanco
  • "\": Un carácter de escape que especifica que el carácter siguiente es un literal. Utilice el carácter de escape si desea hacer coincidir literalmente cualquiera de los caracteres comodines (X, x, 9, !, ?).
  • "\\": Especifica una barra invertida literal

Salida

Lógico. Devuelve T (verdadero) si se encuentra una coincidencia, y F (falso) en caso contrario.

Ejemplos

Ejemplos básicos

Patrones de búsqueda simples

Devuelve T:

MAP("ABC Plumbing"; "xxx")

Devuelve F (la cadena solo tiene 3 números cuando se necesita un mínimo de 4):

MAP("045"; "9999")

Escape de un comodín

Si el objetivo es devolver T solo para los valores que comienzan con el carácter literal "X", seguido de una segunda letra, el parámetro formato "\XX" se asegura de que el primer carácter "X" del parámetro se interprete de manera literal y no como un comodín.

Devuelve T:

MAP("XA-123"; "XX")
MAP("GC-123"; "XX")
MAP("XA-123"; "\XX")

Devuelve F:

MAP("GC-123"; "\XX")

Campos y patrones

Devuelve T para todos los registros con números de facturas que estén conformados o comiencen con dos letras seguidas de cinco números. De lo contrario, devuelve F:

MAP(Número_de_factura; "XX99999")

Devuelve T para todos los registros con números de factura que coinciden totalmente con "AB12345" o que comienzan con "AB12345". De lo contrario, devuelve F:

MAP(Número_de_factura; "AB12345")

Devuelve T para todos los registros con números de facturas que contengan o comiencen con las letras "AB" seguidas de cinco números. De lo contrario, devuelve F:

MAP(Número_de_factura; "AB99999")

Devuelve T para todos los registros que no coinciden con el formato estándar de los números de seguridad social en el campo SSN. De lo contrario, devuelve F:

NOT MAP(SSN; "999-99-9999")

Ejemplos avanzados

Extracción de registros con códigos de producto de 10 caracteres y la combinación de caracteres "859-" al principio

Utilice una sentencia IF y la función MAP( ) para extraer únicamente los registros con códigos de producto de al menos 10 caracteres de longitud y que tengan los caracteres iniciales“859-”:

EXTRACT RECORD IF MAP(Código_de_producto; "85\9-999999") TO "Códigos_largos_859"

Observaciones

Cuándo usar MAP( )

Use la función MAP( ) para buscar patrones o formatos particulares en datos alfanuméricos. Los patrones o formatos pueden estar conformados por caracteres comodín, caracteres literales o una combinación de ambos.

Coincidir mayúsc.-minúsc.

La función MAP( ) distingue entre mayúsculas y minúsculas al comparar dos caracteres literales. Por ejemplo, "a" no es lo mismo que "A".

Si cadena incluye datos de caracteres con uso incoherente de mayúsculas y minúsculas, puede utilizar la función UPPER( ) para convertir los valores a un uso coherente de mayúsculas y minúsculas antes de usar MAP( ).

Por ejemplo:

MAP(UPPER(Número_de_factura); "AB99999")

Coincidencia parcial

MAP( ) admite la coincidencia parcial en una situación pero no en la otra.

La coincidencia parcial en MAP( ) no se ve afectada por la opción Comparaciones de caracteres exactos (SET EXACT ON/OFF).

Admite la coincidencia parcial

La coincidencia parcial se admite si el valor de formato es más corto que el valor de la cadena.

Devuelve T, porque el formato tiene 7 caracteres y la cadena tiene 9 caracteres:

MAP("AB1234567"; "AB99999")

Nota

Para devolver T (verdadero), el valor de formato debe aparecer al principio del valor de la cadena.

No se admite la coincidencia parcial

La coincidencia parcial no se admite si el valor de formato es más largo que el valor de la cadena.

Devuelve F, porque el formato tiene 7 caracteres y la cadena tiene 6 caracteres:

MAP("AB1234", "AB99999")

Si el formato es más largo que la cadena, el resultado es siempre Falso.

Justificación de los espacios en blanco

Los espacios en blanco se tratan como caracteres y se pueden indicar de dos maneras:

  • coincidencia con espacios en blanco literalmente, por medio de la inclusión de espacios en blanco en el valor formato en la posición adecuada
  • uso del comodín "?" , que coincide con cualquier carácter, incluidos los espacios en blanco

Si es necesario, puede utilizar las funciones TRIM( ), LTRIM( ) o ALLTRIM( ) para quitar los espacios en blanco al principio o al final de la cadena. De esta forma, se asegurará de comparar únicamente los caracteres de texto y los espacios internos.

Concatenar campos

Puede concatenar dos o más campos en la cadena si desea buscar en más de un campo de una tabla. Los campos concatenados se tratan como un único campo que incluye los espacios al principio y al final de los campos individuales, a menos que utilice la función ALLTRIM( ) para quitarlos.

Guía de creación de scripts de ACL 14.1