Tipos de pruebas de selección de registros

En esta sección:

Puede seleccionar registros para sus informes mediante una variedad de pruebas implementadas con operadores, descritas en Operadores admitidos para pruebas WHERE e IF. Puede probar:


Principio de página

x
Pruebas de rango con FROM y TO

Cómo:

Utilice los operadores FROM ... TO y NOT-FROM ... TO para determinar si los valores de campo caen dentro o fuera de un rango determinado. Puede utilizar valores o expresiones para especificar los límites inferior y superior. También se pueden aplicar pruebas de rango en los campos de control de clasificación. La prueba de rango se especifica inmediatamente después de la frase de clasificación.

También puede probar si la expresión cae dentro o fuera de los límites.



x
Sintaxis: Cómo Especificar una prueba de rango (FROM y TO)
WHERE [TOTAL] {fieldname|expression} {FROM|IS-FROM} lower TO upper 
WHERE [TOTAL] fieldname  NOT-FROM      lower TO upper

donde:

fieldname
Es cualquier nombre o alias de campo válido.
expression
Es cualquier expresión válida.
lower
Son valores numéricos o alfanuméricos o expresiones que indican límites inferiores. Puede poner las expresiones entre paréntesis para mayor legibilidad.
upper
Son valores numéricos o alfanuméricos o expresiones que indican límites superiores. Puede poner las expresiones entre paréntesis para mayor legibilidad.


Ejemplo: Prueba de rango con FROM... TO

A continuación, un ejemplo de una prueba de rango limitada por expresiones:

WHERE SALES FROM (DEALER_COST * 1.4) TO (DEALER_COST * 2.0)

El ejemplo siguiente presenta una prueba de rango que emplea las expresiones como el valor de comparación y los límites:

WHERE SALES * 1.5 FROM (DEALER_COST * 1.4) TO (DEALER_COST * 2.0)


Ejemplo: Prueba de rango con NOT-FROM... TO

A continuación se muestra cómo se puede utilizar la prueba de rango NOT-FROM ... TO para mostrar solamente los registros que caigan dentro de un rango determinado. En este ejemplo, se trata de todos los empleados cuyos salarios no correspondan al rango que va de los $12,000 a los $22,000.

TABLE FILE EMPLOYEE
PRINT CURR_SAL
BY LAST_NAME
WHERE CURR_SAL NOT-FROM 12000 TO 22000
END

La salida es:

LAST_NAME               CURR_SAL
---------               --------
BANNING               $29,700.00
CROSS                 $27,062.00
GREENSPAN              $9,000.00
IRVING                $26,862.00
SMITH                  $9,500.00
STEVENS               $11,000.00


Ejemplo: Prueba de rango en campos de clasificación con FROM... TO

Los siguientes ejemplos muestran cómo realizar pruebas de rango al clasificar un campo mediante las frases de clasificación BY o ACROSS:

BY MONTH FROM 4 TO 8

o

ACROSS MONTH FROM 6 TO 10

Principio de página

x
Pruebas de rango con GE y LE o GT y LT

Cómo:

Los operadores GE (mayor o igual que), LE (menor o igual que), GT (mayor que) y LT (menor que) se pueden utilizar para especificar un rango.

GE ... LE le permiten especificar valores dentro de los límites de la prueba de rango.

LT ...GT le permiten especificar valores fuera de los límites de la prueba de rango.



x
Sintaxis: Cómo Especificar pruebas de rango (GE y LE)

Para seleccionar valores que caigan dentro de un rango, utilice

WHERE fieldname GE lower AND fieldname LE upper

Para encontrar registros cuyos valores no caigan en un rango especificado, utilice

WHERE fieldname LT lower OR fieldname GT upper

donde:

fieldname
Es cualquier nombre o alias de campo válido.
lower
Son valores numéricos o alfanuméricos o expresiones que indican límites inferiores. Puede poner las expresiones entre paréntesis para mayor legibilidad.
upper
Son valores numéricos o alfanuméricos o expresiones que indican límites superiores. Puede poner las expresiones entre paréntesis para mayor legibilidad.


Ejemplo: Cómo seleccionar valores dentro de un rango

Esta frase WHERE selecciona informes en que el valor UNIT se encuentra entre 10,000 and 14,000.

WHERE UNITS GE 10000 AND UNITS LE 14000

Este ejemplo equivale a:

WHERE UNITS GE 10000
WHERE UNITS LE 14000


Ejemplo: Cómo seleccionar valores fuera de un rango

A continuación se muestra cómo seleccionar valores que se encuentren fuera de una rango de valores mediante los operadores LT y GT. En este ejemplo, sólo los empleados cuyos salarios sen menores de $12,000 y mayores de $22,000 se incluyen en el resultado.

TABLE FILE EMPLOYEE
PRINT CURR_SAL
BY LAST_NAME
WHERE CURR_SAL LT 12000 OR CURR_SAL GT 22000
END

La salida es:

LAST_NAME               CURR_SAL
---------               --------
BANNING               $29,700.00
CROSS                 $27,062.00
GREENSPAN              $9,000.00
IRVING                $26,862.00
SMITH                  $9,500.00
STEVENS               $11,000.00

Principio de página

x
Pruebas con datos no disponibles

Cómo:

Al crear solicitudes de informe, podría querer hacer pruebas en busca de datos no disponibles. Este tipo de pueba resulta útil cuando el atributo MISSING de campos con datos no disponibles está activado en el archivo máster. Para más información sobre datos no disponibles, consulte Cómo manejar registros con valores de campo no disponibles y el manual Cómo describir datos con el lenguaje WebFOCUS .



x
Sintaxis: Cómo Probar en busca de datos no disponibles
{WHERE|IF} fieldname {EQ|IS} MISSING

donde:

fieldname
Es cualquier nombre o alias de campo válido.
EQ|IS
Son operadores de selección de registros. EQ e IS son sinónimos.


x
Sintaxis: Cómo Probar en busca de datos existentes
{WHERE|IF} fieldname {NE|IS-NOT} MISSING

donde:

fieldname
Es cualquier nombre o alias de campo válido.
NE|IS-NOT
Son operadores de selección de registros. NE e IS-NOT son sinónimos.

Principio de página

x
Filtro de cadena de caracteres con CONTAINS y OMITS

Los operadores CONTAINS y OMITS prueban campos alfanuméricos cuando se utilizan con WHERE y, además, campos alfanuméricos y campos de texto cuando se utilizan con IF. En el caso de CONTAINS, si los caracteres en el literal o los literales dados aparecen en cualquier punto entre los caracteres del valor de campo, la prueba es exitosa.

OMITS es lo opuesto de CONTAINS. Si los caracteres en el literal o los literales dados aparecen en cualquier punto entre los caracteres del valor de campo, falla la prueba.

Las pruebas con CONTAINS y OMITS son útiles cuando no sabe cómo deletrear un valor con precisión. Puede recuperar los datos deseados con sólo saber que una cadena específica aparece en un valor.



Ejemplo: Cómo seleccionar registros con CONTAINS y OMITS

Los ejemplos que siguen muestran varias formas en que se pueden utilizar los operadores CONTAINS y OMITS. El nombre de campo que se prueba debe aparecer en el lado izquierdo del operador CONTAINS y OMITS.


Principio de página

x
Cómo filtrar en campos enmascarados

Cómo:

Referencia:

Una máscara es un patrón alfanumérico que proporciona para comparar caracteres en un campo de datos. El campo de datos deben tener formato alfanumérico (A). Puede utilizar los operadores LIKE y NOT LIKE o bien IS e IS-NOT para realizar filtraje de campos enmascarados.

Los carácteres comodín para filtrar campos enmascarados con:

Nota: Los operadores IS (o EQ) e IS-NOT sólo admiten filtraje basado en una máscara para formatos de longitud fija. Si el formato es de longitud variable, por ejemplo, AnV, emplee el operador LIKE o NOT LIKE para realizar filtraje basado en una máscara.



x
Sintaxis: Cómo Realizar filtraje basado en una máscara (mediante LIKE y NOT LIKE)

Para buscar registros con el operador LIKE, utilice

WHERE field LIKE 'mask'

Para rechazar registros basados en el valor de máscara, utilice

WHERE field NOT LIKE 'mask'

o

WHERE NOT field LIKE 'mask'

donde:

campo
Es cualquier nombre o alias de campo válido.
mask
Es una cadena de texto o alfanumérica que proporciona. Hay dos caracteres de comodín que puede utilizar en la máscara. El guión bajo (_) indica que cualquier carácter que esté en esa posición es aceptable, mientras que el símbolo de porcentaje permite cualquier secuencia posterior de cero o más caracteres.

Para obtener información relacionada, consulte Restricciones de caracteres de enmascaramiento.



x
Sintaxis: Cómo Realizar filtraje mediante LIKE y UNLIKE en una frase IF

Para buscar registros con el operador LIKE, utilice

IF field LIKE 'mask1' [OR 'mask2'...]

Para rechazar registros basados en el valor de máscara, utilice

IF field UNLIKE 'mask1' [OR 'mask2' ...]

donde:

campo
Es cualquier nombre o alias de campo válido.
mask1, mask2
Son los patrones alfanuméricos para comparar. Si la máscara contiene espacios en blanco, es obligatorio el uso de comillas simples. Hay dos caracteres de comodín que puede utilizar en una máscara. El guión bajo (_) indica que cualquier carácter que esté en esa posición es aceptable, mientras que el símbolo de porcentaje permite cualquier secuencia posterior de cero o más caracteres. Cualquier otro carácter de la máscara sólo se acepta a sí mismo como coincidente con el patrón, en esa posición.


x
Sintaxis: Cómo Filtrar campos en base a una máscara (usando IS e IS-NOT)

Para buscar registros con el operador IS, utilice

{WHERE|IF} field {IS|EQ} 'mask'

Para rechazar registros basados en el valor de máscara, utilice

{WHERE|IF} field {IS-NOT|NE} 'mask'

donde:

campo
Es cualquier nombre o alias de campo válido.
IS|IS-NOT
Son operadores de selección de registros. EQ es sinónimo de IS. NE es sinónimo de IS-NOT.
mask
Es una cadena de texto o alfanumérica que proporciona. Los caracteres comodín que puede utilizar en la máscara son el signo de dólar ($) y la combinación $*. El signo de dólar indica que cualquier carácter en esa posición es aceptable. La combinación $* permite colocar cualquier secuencia de cero o más caracteres. El signo $* es la interpretación taquigráfica de la escritura de una secuencia de signos de dinero para llenar el final de la máscara sin especificar una longitud. Solamente se puede utilizar esta combinación al final de la máscara.

Para obtener información relacionada, consulte Restricciones de caracteres de enmascaramiento.



x
Referencia: Restricciones de caracteres de enmascaramiento


Ejemplo: Cómo filtrar los caracteres iniciales

Para listar a todos los empleados que hayan tomado cursos de nivel básico, si curso básico empieza con la palabra BASIC, emita la siguiente solicitud:

TABLE FILE EMPLOYEE
PRINT COURSE_NAME COURSE_CODE
BY LAST_NAME BY FIRST_NAME
WHERE COURSE_NAME LIKE 'BASIC%'
END

La salida es:



Ejemplo: Cómo filtrar caracteres en cualquier punto de un campo

Si desea ver cuáles empleados han tomado un curso de FOCUS, pero no sabe dónde aparece la palabra FOCUS en el título, ponga la palabra FOCUS entre llaves con comodines (lo que equivale a utilizar el operador CONTAINS):

TABLE FILE EMPLOYEE
PRINT COURSE_NAME COURSE_CODE
BY LAST_NAME BY FIRST_NAME
WHERE COURSE_NAME LIKE '%FOCUS%'
END

La salida es:

LAST_NAME        FIRST_NAME  COURSE_NAME                     COURSE_CODE
---------        ----------  -----------                     -----------
BLACKWOOD        ROSEMARIE   WHAT'S NEW IN FOCUS             202        
JONES            DIANE       FOCUS INTERNALS                 203        

Si desea ver listar a todos los empleados que han tomado un curso de la serie 20x, pero no sabe si todos estos cursos tienen el mismo código excepto por el carácter final, emita la solicitud que sigue:

TABLE FILE EMPLOYEE
PRINT COURSE_NAME COURSE_CODE
BY LAST_NAME BY FIRST_NAME
WHERE COURSE_CODE LIKE '20_'
END

La salida es:

LAST_NAME        FIRST_NAME  COURSE_NAME                     COURSE_CODE
---------        ----------  -----------                     -----------
BLACKWOOD        ROSEMARIE   WHAT'S NEW IN FOCUS             202        
JONES            DIANE       FOCUS INTERNALS                 203        
                             ADVANCED TECHNIQUES             201        


Ejemplo: Cómo filtrar caracteres iniciales y longitud específica

El ejemplo siguiente muestra cómo filtrar caracteres iniciales y especificar la longitud del valor de campo por el que busca. En este ejemplo, la frase WHERE establece que el apellido debe empezar por BAN y tener una longitud de siete caracteres (los tres primeros caracteres BAN más cuatro marcadores de posición, en este caso, el signo de dólar). Los caracteres restantes en el campo (de las posiciones 8 a 15) deben estar en blanco.

TABLE FILE EMPLOYEE
PRINT LAST_NAME
WHERE LAST_NAME IS 'BAN$$$$'
END

La salida es:

LAST_NAME
---------
BANNING  


Ejemplo: Cómo filtrar registros de longitud no especificada

Para recuperar registros con longitudes no especificadas, utilice el signo de dólar seguido de un asterisco ($*).

WHERE LAST_NAME IS 'BAN$*'

Esta frase busca apellidos que empiecen por las letras BAN, independientemente de la longitud del nombre. Los caracteres $* reducen la redacción tecleada y le permiten definir una máscara de filtrado sin conocer la longitud exacta del campo que desee recuperar.



x
Sintaxis: Cómo Desactivar los caracteres comodín
SET EQTEST = {WILDCARD|EXACT}

donde:

WILDCARD
Trata los caracteres $ y $* como si fuesen comodines. WILDCARD es el valor predeterminado.
EXACT
Trata los caracteres $ y $* como si fuesen normales, no comodines, en pruebas IF y pruebas WHERE que puedan traducirse en pruebas IF.


Ejemplo: Cómo seleccionar registros con SET EQTEST

La siguiente solicitud, basada en el origen de datos VIDEOTR2, crea dos direcciones de e-mail parecidas:

DEFINE FILE VIDEOTR2                              
SMAIL/A18= IF EMAIL EQ 'handyman@usa.com'         
           THEN 'handyiman@usa.com'               
           ELSE EMAIL;                            
SMAIL/A18 = STRREP(18,SMAIL,1,'_',1,'$',18,SMAIL);
END
TABLE FILE VIDEOTR2                               
PRINT SMAIL                                       
BY LASTNAME BY FIRSTNAME                          
WHERE SMAIL EQ 'handy$man@usa.com'                
ON TABLE SET EQTEST WILDCARD
END

Con SET EQTEST = WILDCARD (por defecto), la prueba WHERE WHERE SMAIL IS ‘handy$man@usa.com’ devuelve el registro con $ en la dirección y el registro con la letra i, puesto que $ se trata como si fuese un comodín; cualquier carácter que se encuentre en esta posición hace que el registro pase la prueba de filtraje:

LASTNAME         FIRSTNAME   SMAIL            
--------         ---------   -----            
HANDLER          EVAN        handy$man@usa.com
                             handyiman@usa.com

Si cambia el comando ON TABLE SET a ON TABLE SET EQTEST EXACT, se devuelve únicamente la dirección de e-mail con el carácter $, ya que ahora el signo de dólar se trata como si fuese normal y sólo pasa la prueba cuando existe una pareja exacta:

LASTNAME         FIRSTNAME   SMAIL            
--------         ---------   -----            
HANDLER          EVAN        handy$man@usa.com

Principio de página

x
Cómo utilizar un carácter de escape para LIKE

Cómo:

Referencia:

Puede utilizar un carácter de escape en la sintaxis LIKE para tratar los caracteres de enmascaramiento (%  y  _) como literales en el patrón de búsqueda, en vez de como comodines. Esta técnica le permite buscar estos caracteres en los datos. Para obtener información relacionada, consulte Cómo filtrar en campos enmascarados.



x
Sintaxis: Cómo Usar un carácter de escape en una frase WHERE

Se puede usar cualquier carácter para escape, siempre que vaya precedido de la palabra ESCAPE.

WHERE fieldname LIKE 'mask' ESCAPE 'c'

donde:

fieldname
Es cualquier nombre o alias de campo válido que haya que evaluar en la prueba de selección.
mask
Es el patrón de búsqueda que proporciona. Se requieren comillas simples.
c
Es cualquier carácter que identifique como carácter de escape. Si inserta el carácter de escape en la máscara antes de un % o _, el carácter % o _ se tratará como un literal en vez de como un comodín. Se requieren comillas simples.


x
Sintaxis: Cómo Especificar un carácter de escape para una máscara en una frase IF

Para especificar cualquier carácter individual como carácter de escape, anteponga la palabra ESCAPE al carácter, en la sintaxis LIKE o UNLIKE

IF field {LIKE|UNLIKE} 'mask1' ESCAPE 'a' [OR 'mask2' ESCAPE 'b' ... 

donde:

campo
Es cualquier nombre o alias de campo válido que haya que evaluar en la prueba de selección.
mask1, mask2
Son patrones de búsqueda proporcionados por ud. Se requieren comillas simples.
a, b ...
Son caracteres individuales que ha identificado como de escape. Cada máscara puede especificar su propio carácter de escape o usar el mismo carácter que otras máscaras Si inserta el carácter de escape en la máscara antes de un % o _, el carácter % o _ se tratará como un literal en vez de como un comodín. Si la máscara contiene espacios en blanco, es obligatorio el uso de comillas simples.


x
Referencia: Notas sobre el uso de caracteres de escape


Ejemplo: Cómo usar un carácter de escape en una frase WHERE

El origen de datos VIDEOTR2 contiene un campo de dirección de e-mail. Para buscar la dirección de e-mail con los caracteres 'handy_' puede emitir la siguiente solicitud:

TABLE FILE VIDEOTR2
PRINT CUSTID LASTNAME FIRSTNAME EMAIL
WHERE EMAIL LIKE 'handy_%'
END

Dado que el carácter de subrayado funciona como carácter comodín, esta solicitud devuelve dos casos, sólo uno de los cuales contiene el carácter subrayado.

La salida es:

CUSTID  LASTNAME         FIRSTNAME   EMAIL            
------  --------         ---------   -----            
0944    HANDLER          EVAN        handy_man@usa.com
0944    HANDLER          EVAN        handyman@usa.com 

Para recuperar sólo el caso que contiene el carácter de subrayado, debe indicar que el subrayado debe manejarse como un carácter normal, no como un comodín. La solicitud que sigue recupera sólo el caso con el carácter de subrayado en el campo de e-mail:

TABLE FILE VIDEOTR2
PRINT CUSTID LASTNAME FIRSTNAME EMAIL
WHERE EMAIL LIKE 'handy\_%' ESCAPE '\'
END

La salida es:

CUSTID  LASTNAME         FIRSTNAME   EMAIL            
------  --------         ---------   -----            
0944    HANDLER          EVAN        handy_man@usa.com


Ejemplo: Cómo usar un carácter de escape en una frase IF

El origen de datos VIDEOTR2 contiene un campo de dirección de e-mail. Para buscar direcciones de correo-e con los caracteres 'handy_', emita la siguiente solicitud:

TABLE FILE VIDEOTR2
PRINT CUSTID LASTNAME FIRSTNAME EMAI
IF EMAIL LIKE 'handy_%'
END

Dado que el carácter de subrayado funciona como carácter comodín, esta solicitud devuelve dos casos, sólo uno de los cuales contiene el carácter subrayado.

La salida es:

CUSTID  LASTNAME         FIRSTNAME   EMAIL
------  --------         ---------   -----
0944    HANDLER          EVAN        handy_man@usa.com
0944    HANDLER          EVAN        handyman@usa.com

Para recuperar sólo el caso que contiene el carácter de subrayado, debe indicar que el subrayado debe manejarse como un carácter normal, no como un comodín. La solicitud que sigue recupera sólo el caso con el carácter de subrayado en el campo de e-mail:

TABLE FILE VIDEOTR2
PRINT CUSTID LASTNAME FIRSTNAME EMAI
IF EMAIL LIKE 'handy\_%' ESCAPE '\'
END

La salida es:

CUSTID  LASTNAME         FIRSTNAME   EMAIL
------  --------         ---------   -----
0944    HANDLER          EVAN        handy_man@usa.com

Principio de página

x
Cómo calificar segmentos principales utilizando INCLUDES y EXCLUDES

Referencia:

Puede probar si los casos de un campo dado en un segmento secundario incluyen o excluyen todos los literales en una lista mediante los operadores INCLUDES y EXCLUDES. INCLUDES y EXCLUDES recuperan sólo registros principales. No puede imprimir o listar en el mismo segmento que el campo especificado para la prueba INCLUDES y EXCLUDES.

Nota: Los INCLUDES y EXCLUDES sólo funcionan con orígenes de datos de FOCUS con múltiples segmentos.



x
Referencia: Notas sobre el uso para INCLUDES y EXCLUDES


Ejemplo: Cómo seleccionar registros con INCLUDES y EXCLUDES

Una solicitud que contiene una frase

WHERE JOBCODE INCLUDES A01 OR B01

devuelve registros de empleado con casos JOBCODE para A01 y B01, como si hubiese utilizado AND.

En el ejemplo que sigue, para que se seleccione un registro, si campo de JOBCODE debe contar con valores de A01 y B01:

WHERE JOBCODE INCLUDES A01 AND B01

Si falta alguno, no se selecciona el registro para el informe.

Si el criterio de selección es

WHERE JOBCODE EXCLUDES A01 AND B01

se selecciona para el informe cada registro que no tenga ambos valores.

En el origen de datos CAR, sólo Inglaterra produce Jaguar y Jensen, por lo que la solicitud

TABLE FILE CAR
PRINT COUNTRY
WHERE CAR INCLUDES JAGUAR AND JENSEN
END

genera este resultado:

COUNTRY
-------
ENGLAND

WebFOCUS