Función MATCH( )

Devuelve un valor lógico que indica si el valor especificado coincide con alguno de los valores con los que se lo compara.

Sintaxis

MATCH(valor_de_comparación; prueba <;...n>)

Parámetros

Nombre Tipo Descripción
valor_comparación

carácter

numérico

fechahora

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

carácter

numérico

fechahora

Cualquier campo, expresión o valor literal que desee comparar con el valor_de_comparación.

Puede especificar tantos valores de prueba como sea necesario, pero todos los valores especificados deben ser del mismo tipo de datos.

MATCH(valor_comparación; `20140930`; `20141030`)

Nota

Los valores de entrada de la función MATCH( ) pueden ser datos de carácter, numéricos o de fechahora. No es posible mezclar tipos de datos. Todos los valores de entrada deben pertenecer a la misma categoría de datos.

Salida

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

Ejemplos

Ejemplos básicos

Nota

Los valores que se devuelven para las comparaciones de caracteres asumen que SET EXACT está OFF (el ajuste predeterminado), salvo cuando se especifique lo contrario.

Comprobación de valores literales

Devuelve T:

MATCH("ABC"; "BCD"; "CDE"; "AB")

Devuelve F:

MATCH(98; 99; 100; 101)

Comprobación de un campo

Devuelve T para todos los registros que contienen “Phoenix”, “Austin” o “Los Angeles” en el campo Ciudad_proveedor. De lo contrario, devuelve F:

MATCH(Ciudad_proveedor; "Phoenix"; "Austin"; "Los Angeles")

Devuelve T para todos los registros que no contienen "Phoenix", "Austin" o "Los Angeles" en el campo Ciudad_proveedor. De lo contrario, devuelve F:

NOT MATCH(Ciudad_proveedor; "Phoenix"; "Austin"; "Los Angeles")

Devuelve T para todos los registros que contienen "PHOENIX", "AUSTIN" o "LOS ANGELES" en el campo Ciudad_proveedor, sin importar las mayúsculas y minúsculas de los caracteres del campo. De lo contrario, devuelve F:

Los valores del campo Ciudad_proveedor se convierten a mayúsculas antes de que se comparen con los nombres de las ciudades en mayúsculas.

MATCH(UPPER(Ciudad_proveedor); "PHOENIX"; "AUSTIN"; "LOS ANGELES")

Comprobación de varios campos

Devuelve T para todos los registros que contienen "Phoenix" en el campo Ciudad_proveedor, Ciudad o Ciudad_2. De lo contrario, devuelve F:

MATCH("Phoenix"; Ciudad_proveedor; Ciudad; Ciudad_2)

Comportamiento de SET EXACT

Devuelve T para todos los registros con códigos de producto "A", "D" o "F" o códigos de producto que comienzan con "A", "D" o "F" en el campo Código_de_producto. De lo contrario, devuelve F:

MATCH(Código_de_producto; "A"; "D"; "F")

Devuelve T para todos los registros con códigos de producto de un carácter "A", "D" o "F" en el campo Código_de_producto. De lo contrario, devuelve F (SET EXACT debe estar activado en ON):

MATCH(Código_de_producto; "A"; "D"; "F")

Comparación de dos campos

Devuelve T para todos los registros que tienen domicilios idénticos de proveedor y empleado. De lo contrario, devuelve F:

Puede utilizar funciones adicionales para estandarizar el formato de los domicilios de los proveedores y los empleados.

MATCH(Ciudad_proveedor; Domicilio_empleado)

Comparación de fechas

Devuelve T para todos los registros con una fecha de factura del 30 Sep 2014 o 30 Oct 2014. De lo contrario, devuelve F:

MATCH(Fecha_de_factura; `20140930`; `20141030`)

Ejemplos avanzados

Extracción de registros de inventario anómalos

Utilice la declaración IF y la función MATCH( ) para extraer los registros que contienen diferentes importes en el campo Valor_inventario_al_costo y el campo calculado Costo_x_cantidad:

EXTRACT RECORD IF NOT MATCH(Valor_inventario_al_costo; Costo_x_cantidad) TO "Importes_no_coincidentes"

Se están extrayendo los registros para los departamentos 101, 103 y 107

Utilice la instrucción IF y la función MATCH( ) para extraer únicamente los registros asociados con los departamentos 101, 103 o 107:

EXTRACT RECORD IF MATCH(Dept; "101"; "103"; "107") TO "Tres_Departamentos"

Observaciones

Utilice MATCH( ) en lugar del operador OR

Puede utilizar la función MATCH( ) en lugar de expresiones que utilizan el operador OR.

Por ejemplo:

MATCH(Ciudad; "Phoenix"; "Austin"; "Los Angeles")

equivale a

Ciudad="Phoenix" OR Ciudad="Austin" OR Ciudad="Los Angeles"

Precisión decimal de los valores de entrada numéricos

Cuando los valores de entrada numéricos que se están comparando tienen una precisión diferente en decimales, la comparación utiliza el nivel más elevado de precisión.

Devuelve T, porque 1.23 es igual a 1.23:

MATCH(1.23; 1.23; 1.25)

Devuelve F, porque 1.23 no es igual a 1.234 una vez que se tiene en cuenta el tercer lugar decimal:

MATCH(1.23; 1.234; 1.25)

Parámetros de caracteres

Coincidir mayúsc.-minúsc.

La función MATCH( ) diferencia entre mayúsculas y minúsculas cuando se utiliza con datos de caracteres. Cuando compara caracteres, "a" no equivale a "A".

Devuelve F:

MATCH("a";"A";"B";"C")

Si está trabajando con datos que incluyen incoherencias entre mayúsculas y minúsculas, puede utilizar la función UPPER( ) para convertir los valores a un uso coherente de mayúsculas antes de usar MATCH( ).

Devuelve T:

MATCH(UPPER("a"); UPPER("A"); UPPER("B");  UPPER("C"))

Coincidencia parcial

Se admite la coincidencia parcial para las comparaciones de caracteres. Cualquiera de los valores que se están comparando puede estar contenido por el otro valor y eso se considerará una coincidencia.

Los siguientes dos ejemplos devuelven T:

MATCH("AB"; "ABC")
MATCH("ABC"; "AB")

Nota

El valor más corto debe aparecer al principio del valor más extenso para que exista una coincidencia.

Coincidencia parcial y SET EXACT

La coincidencia parcial se activa cuando SET EXACT = OFF, que es el ajuste predeterminado de Analytics. Si SET EXACT = ON, la coincidencia parcial se desactiva y los valores de comparación deben coincidir de manera exacta para que haya una coincidencia.

Los dos ejemplos anteriores son Falsos cuando SET EXACT está ON.

Si desea obtener más información acerca de SET EXACT (la opción Comparaciones de caracteres exactos), consulte Comando SET.

Activación o desactivación de SET EXACT

Si desea asegurarse de que no se utilice la opción Comparaciones de caracteres exactos con la función MATCH( ), compruebe que la opción no esté seleccionada en la ficha Tabla del cuadro de diálogo Opciones (Herramientas > Opciones).

Si está usando un script, puede agregar el comando SET EXACT OFF antes de que aparezca la función MATCH( ). Si es necesario, puede restaurar el estado previo con el comando SET EXACT ON.

Parámetros Fechahora

Un campo de fecha, fechahora u hora especificado como un valor de entrada de una función puede utilizar cualquier formato de fecha, fechahora u hora, siempre que la definición del campo establezca correctamente el formato.

Combinación de valores de entrada de fecha, fechahora y hora

No existen impedimentos para mezclar los valores de fecha, fechahora y hora en los valores de entrada de la función MATCH( ), pero la mezcla de estos subtipos de Fechahora puede arrojar resultados que no son significativos.

Analytics utiliza equivalentes de números de serie para procesar los cálculos de fechahora, por lo que, incluso si usted está interesado solo en la porción fecha de un valor de fechahora, la porción hora sigue formando parte del cálculo.

Veamos los siguientes ejemplos:

Devuelve T, porque 31 de diciembre de 2014 coincide con el segundo valor de prueba:

MATCH(`20141231`;`20141229`;`20141231`)

Devuelve F, aun cuando el valor_de_comparación y el segundo valor de prueba tienen una fecha idéntica de 31 de diciembre de 2014:

MATCH(`20141231 120000`;`20141229`;`20141231`)

Si nos fijamos en el número de serie equivalente de estas dos expresiones, podemos ver por qué la segunda se evalúa como falsa.

Devuelve T, porque el número de serie valor_de_comparación es igual al segundo número de serie prueba:

MATCH(42003.000000, 42001.000000; 42003.000000)

Devuelve F, porque el número de serie valor_de_comparación no es igual a ninguno de los valores de prueba:

MATCH(42003.500000; 42001.000000; 42003.000000)

La porción de la fecha de los números de serie 42003.500000 y 42003.000000 coincide, pero la porción de la hora no lo hace. 0.500000 es el número de serie que equivale a 12:00 PM.

Armonizar subtipos de Fechahora

Para evitar problemas que podrían surgir por la mezcla de subtipos de Fechahora, puede usar las funciones para armonizar los subtipos.

Por ejemplo, esta expresión, que utiliza los mismos valores iniciales que el segundo ejemplo anterior, se evalúa como T en lugar de F:

MATCH(CTOD(DATE(`20141231 120000`;"YYYYMMDD");"YYYYMMDD");`20141229`; `20141231`)

Especificar un valor de fecha, fechahora u hora literal

Al especificar un valor literal de fecha, fechahora u hora para cualquiera de los valores de entrada de una función, solo puede utilizar los formatos de la siguiente tabla y debe encerrar el valor entre acentos graves; por ejemplo, `20141231`.

No utilice ningún separador, como barras (/) o dos puntos (:), entre los componentes individuales de fechas u horas.

  • Valores de fechahora: puede utilizar cualquier combinación de formatos de fecha, separador y hora de la siguiente tabla. La fecha debe preceder a la hora y se debe utilizar un separador entre las dos. Los separadores válidos son un espacio en blanco, la letra 't' o la letra 'T'.

  • Valores de hora: debe especificar las horas con el reloj de 24 horas. Los desplazamientos respecto del Horario Universal Coordinado (UTC, por sus siglas en inglés) deben ir precedidos de un signo más (+) o un signo menos (-).

    Formatos de ejemplo

    Valores literales de ejemplo

    AAAAMMDD

    `20141231`

    AAMMDD

    `141231`

    AAAAMMDD hhmmss

    `20141231 235959`

    AAMMDDthhmm

    `141231t2359`

    AAAAMMDDThh

    `20141231T23`

    AAAAMMDD hhmmss+/-hhmm

    (desplazamiento de UTC)

    `20141231 235959-0500`

    AAMMDD hhmm+/-hh

    (desplazamiento de UTC)

    `141231 2359+01`

    thhmmss

    `t235959`

    Thhmm

    `T2359`

    Nota

    No use solo hh en el formato de la hora principal con datos que tienen un desplazamiento del UTC. Por ejemplo, evite: hh+hhmm. Los resultados pueden no ser confiables.

     

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