Las expresiones de consulta se usan en ArcGIS para seleccionar un subconjunto de entidades y registros de tablas. Las expresiones de consulta en ArcGIS se ajustan a las expresiones SQL estándar. Por ejemplo, puede utilizar esta sintaxis mediante la herramienta Seleccionar por atributos o con el cuadro de diálogo Generador de consultas para establecer una consulta de definición de capa.
Este tema describe cómo generar las expresiones de cláusula WHERE básicas y es útil si acaba de comenzar con SQL. Para obtener una referencia más detallada, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.
Una expresión SQL simple
SELECT * FROM forma la primera parte de la expresión SQL y se proporciona automáticamente.
Las expresiones de consulta utilizan el formato general que sigue a una cláusula Select * From <capa o dataset> Where (por ejemplo, la parte de la expresión SQL que aparece después de SELECT * FROM <Nombre_de capa> WHERE).
Aquí le presentamos la forma general para las expresiones de consulta de ArcGIS:
<Nombre_de campo> <Operador> <Valor o cadena de caracteres>
Para las consultas compuestas, se utiliza la siguiente forma:
<Nombre_de campo> <Operador> <Valor o cadena de caracteres> <Conector> <Nombre_de campo> <Operador> <Valor o cadena de caracteres> ...
Opcionalmente, se pueden utilizar los paréntesis () para definir el orden de las operaciones en las consultas compuestas.
Debido a que está eligiendo las columnas como un todo, no puede restringir el SELECT para que devuelva solo algunas de las columnas en la tabla correspondiente porque la sintaxis SELECT * tiene una codificación estricta. Por esta razón, no se pueden utilizar palabras clave, tales como DISTINCT, ORDER BY y GROUP BY en una consulta SQL en ArcGIS, excepto cuando se utilizan subconsultas. Consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS para obtener información sobre las subconsultas.
En la mayoría de los cuadros de diálogo de ArcGIS en los que genera una expresión de consulta, se le proporciona el nombre de la capa o tabla (o lo puede seleccionar desde una lista desplegable). Por ejemplo:
La siguiente parte de la expresión es la cláusula WHERE, que es la parte que debe generar. Una cláusula WHERE de SQL básica debería verse de la siguiente manera
STATE_NAME = 'Alabama'
Esto seleccionará las entidades que contienen "Alabama" en un campo denominado STATE_NAME.
sintaxis de SQL
La sintaxis de SQL que se utiliza depende de la fuente de datos. Cada DBMS tiene su propio dialecto de SQL.
Para consultar datos basados en archivo (incluidas las geodatabases de archivos, las coberturas, los shapefiles, las tablas INFO, las tablas dBASE y los datos CAD y VPF), debe usar el dialecto de SQL de ArcGIS que admite un subconjunto de funciones de SQL. Para consultar geodatabases personales, debe utilizar la sintaxis de Microsoft Access. Para consultar una geodatabase de ArcSDE, utilice la sintaxis de SQL del DBMS subyacente (es decir, Oracle, SQL Server, DB2, Informix, o PostgreSQL).
Los cuadros de diálogo de ArcGIS en los que se crean las cláusulas WHERE de SQL le ayudarán a utilizar la sintaxis correcta para la base de datos en la que realiza la consulta. Enumeran los valores y los nombres de campo correctos con los delimitadores adecuados. También seleccionan por usted los operadores y las palabras clave de SQL relevantes.
Buscar cadenas de caracteres
La cadenas de caracteres siempre deben estar encerradas con comillas simples. Por ejemplo:
STATE_NAME = 'California'
Las cadenas de caracteres en las expresiones distinguen entre mayúsculas y minúsculas, excepto cuando realiza consultas en clases de entidad y tablas de geodatabase personal. Para realizar una búsqueda que no distinga entre mayúsculas y minúsculas en otros formatos de datos, puede utilizar una función SQL para convertir todos los valores al mismo tipo de letra. Para las fuentes de datos basadas en archivo, como las geodatabases de archivo o los shapefiles, utilice la función UPPER o LOWER.
Por ejemplo, la siguiente expresión seleccionará a los clientes cuyo apellido esté almacenado ya sea como Jones o como JONES:
UPPER(LAST_NAME) = 'JONES'
Otras fuentes de datos tienen funciones similares. Las geodatabases personales, por ejemplo, tienen funciones llamadas UCASE y LCASE que realizan la misma operación.
Utilice el operador LIKE (en lugar del operador =) para crear una búsqueda de cadena de caracteres parcial. Por ejemplo, esta expresión seleccionará Mississippi y Missouri entre los nombres de estados de EE. UU.:
STATE_NAME LIKE 'Miss%'
El símbolo de porcentaje (%) significa que se acepta cualquier elemento en su lugar: un carácter, cien caracteres o ningún carácter. Alternativamente, si desea buscar con un comodín que representa un carácter, utilice _.
Por ejemplo, esta expresión serviría para buscar Catherine Smith y Katherine Smith:
OWNER_NAME LIKE '_atherine smith'
Los comodines de más arriba funcionan para los datos basados en archivo o las geodatabases de ArcSDE. Los comodines que utiliza para consultar geodatabases personales son * para cualquier cantidad de caracteres y ? para un carácter.
Los caracteres comodín aparecen como botones en los cuadros de diálogo Seleccionar por atributos y Generador de consultas. Puede hacer clic en el botón para introducir el comodín en la expresión que está generando. Solo aparecen los caracteres comodín que son apropiados para la fuente de datos de la capa o tabla que está consultando.
Si utiliza un carácter comodín en una cadena de caracteres con el operador =, el carácter se considera parte de la cadena de caracteres, no un comodín.
Puede utilizar los operadores mayor que (>), menor que (<), mayor o igual que (>=), menor o igual que (<=) y BETWEEN para seleccionar los valores de cadenas de caracteres basados en el ordenamiento. Por ejemplo, esta expresión seleccionará todas las ciudades en una cobertura con nombres que comienzan con las letras de M a Z:
CITY_NAME >= 'M'
También puede utilizar el operador no igual (<>) cuando realiza consultas de cadenas de caracteres.
Si la cadena de caracteres contiene una comilla simple, tendrá que usar otra comilla simple como carácter de escape. Por ejemplo:
NAME = 'Alfie''s Trough'
La palabra clave NULL
Puede utilizar la palabra clave NULL para seleccionar las entidades y los registros que tienen valores nulos para el campo que se especificó. La palabra clave NULL siempre está precedida por IS o IS NOT.
Por ejemplo, para encontrar las ciudades para las que no se introdujo la población de 1996, puede utilizar
POPULATION96 IS NULL
Alternativamente, para encontrar las ciudades para las que se introdujo la población de 1996, puede utilizar
POPULATION96 IS NOT NULL
Buscar números
Puede consultar números con los operadores igual (=), no igual (<>), mayor que (>), menor que (<), mayor o igual que (>=), menor o igual que (<=) y BETWEEN.
Por ejemplo
POPULATION96 >= 5000
Los valores numéricos siempre se enumeran utilizando el punto como delimitador decimal independientemente de la configuración regional. La coma no se puede usar como delimitador decimal o de miles en una expresión.
Cálculos
Los cálculos se pueden incluir en las expresiones por medio de los operadores aritméticos +, -, * y /.
Los cálculos se pueden realizar entre campos y números.
Por ejemplo:
AREA >= PERIMETER * 100
Los cálculos también se pueden realizar entre campos.
Por ejemplo, para buscar los países con una densidad de población menor o igual que 25 personas por milla cuadrada, podría utilizar esta expresión:
POP1990 / AREA <= 25
Jerarquía del operador
Las expresiones se evalúan de acuerdo con las reglas estándar de jerarquía del operador. Por ejemplo, la parte de una expresión entre paréntesis se evalúa antes que la parte que no está entre paréntesis.
El ejemplo:
HOUSEHOLDS > MALES * POP90_SQMI + AREA
se evalúa de distinta manera que
HOUSEHOLDS > MALES * (POP90_SQMI + AREA)
Puede hacer clic para agregar paréntesis y luego introducir la expresión que desea colocar entre paréntesis, o resaltar la expresión existente y luego hacer clic en el botón Paréntesis para encerrarla entre paréntesis.
Combinar expresiones
Se pueden generar expresiones complejas combinando las expresiones con los operadores AND y OR.
Por ejemplo, la siguiente expresión selecciona todas las casas que tengan más de 1.500 pies cuadrados y un garaje para tres o más autos:
AREA > 1500 AND GARAGE > 3
Cuando utiliza el operador OR, al menos una de las dos partes de la expresión separada por el operador OR debe ser verdadera para que se seleccione el registro.
Por ejemplo:
RAINFALL < 20 OR SLOPE > 35
Utilice el operador NOT al comienzo de una expresión para buscar entidades o registros que no coincidan con la expresión especificada.
Por ejemplo:
NOT STATE_NAME = 'Colorado'
Las expresiones con NOT se pueden combinar con AND y OR.
Por ejemplo, esta expresión selecciona todos los estados de New England excepto Maine:
SUB_REGION = 'New England' AND NOT STATE_NAME = 'Maine'
Subconsultas
Una subconsulta es una consulta anidada dentro de otra consulta, y solo es compatible con las fuentes de datos de la geodatabase. Se puede usar para aplicar funciones predicado o agregar o para comparar datos con los valores almacenados en otra tabla. Por ejemplo, esta consulta seleccionará solo los países que no se encuentran también listados en la tabla indep_countries:
COUNTRY_NAME NOT IN (SELECT COUNTRY_NAME FROM indep_countries)
Para obtener más información, consulte Referencia SQL para las expresiones de consulta utilizadas en ArcGIS.
Consultar fechas
Los cuadros de diálogo de ArcGIS en los que se crean las cláusulas WHERE de SQL le ayudarán a utilizar la sintaxis de datos correcta para la base de datos en la que realiza la consulta. Por lo general, solo deberá hacer clic en el campo, el operador y el valor para generar la sintaxis adecuada.