Selección de datos dentro de intervalos en SQL

Presentación da cláusula WHERE e condición ENTRE

O linguaxe de consulta estruturada (SQL) fornece aos usuarios da base de datos a capacidade de crear consultas personalizadas para extraer información de bases de datos. Nun artigo anterior, exploramos a extracción de información dunha base de datos mediante consultas SQL SELECT . Expoñemos a discusión e explore como pode realizar consultas avanzadas para recuperar datos que coincidan con condicións específicas.

Consideremos un exemplo baseado na base de datos Northwind que se usa habitualmente, que frecuentemente vén con produtos de base de datos como un tutorial.

Aquí tes un fragmento da táboa de produtos da base de datos:

Táboa de produtos
ProdutoID ProdutoName SupplierID CantidadePerUnit Prezo por unidade UnidadesInstock
1 Chai 1 10 caixas x 20 bolsas 18.00 39
2 Chang 1 Botellas de 24 a 12 oz 19.00 17
3 Xarope anisado 1 Botellas de 12 a 550 ml 10.00 13
4 Chef Anton's Cajun Seasoning 2 48 - 6 botes de onza 22.00 53
5 Chef Anton's Gumbo Mix 2 36 caixas 21.35 0
6 Grandes Girlenberry Spread 3 12 - jarras de ocho onzas 25.00 120
7 Peras secas orgánicas do tio Bob 3 12 - 1 lb pkgs. 30.00 15

Condicións sinxelas de límite

As primeiras restricións que poñeremos na nosa consulta implicarán condicións de fronteiras simples. Podemos especificar estes na cláusula WHERE da consulta SELECT, utilizando declaracións de estado simples construídas con operadores estándar, como <,>,> = e <=.


En primeiro lugar, probaremos unha consulta sinxela que nos permite extraer unha lista de todos os produtos da base de datos que teñan unha Tarifa Unitaria de máis de 20.00:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 20.00

Isto produce unha lista de catro produtos, como se mostra a continuación:

ProductName UnitPrice ------- -------- Chef Anton's Gumbo Mix 21.35 Xefe Anton's Cajun Seasoning 22.00 Grandes Girlenberry Spread 25.00 Uncle Bob's Peres secas orgánicas 30.00

Tamén podemos usar a cláusula WHERE con valores de cadea. Isto basicamente iguala os caracteres aos números, con A que representa o valor 1 e Z que representan o valor 26. Por exemplo, poderiamos mostrar todos os produtos con nomes que comezan con U, V, W, X, Y ou Z coa seguinte consulta:

SELECT ProductName FROM products WHERE ProductName> = 'T'

Que produce o resultado:

ProductName ------- Peras secas orgánicas de tío Bob

Expresando intervalos usando límites

A cláusula WHERE tamén nos permite implementar unha condición de rango nun valor empregando múltiples condicións. Por exemplo, se quixésemos levar a nosa consulta anterior e limitar os resultados a produtos con prezos entre as 15.00 e as 20.00, poderiamos usar a seguinte consulta:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice> 15.00 AND UnitPrice <20.00

Isto produce o resultado que se mostra a continuación:

ProductName UnitPrice ------- -------- Chai 18.00 Chang 19.00

Expresando intervalos entre ENTRE

SQL tamén ofrece unha sintaxe entre ENTRE sintaxe que reduce o número de condicións que precisamos incluír e fai que a consulta sexa máis lexible. Por exemplo, en vez de utilizar as dúas condicións WHERE arriba, poderiamos expresar a mesma consulta que:

SELECT ProductName, UnitPrice FROM products WHERE UnitPrice ENTRE 15.00 E 20.00

Do mesmo xeito que coas nosas outras cláusulas de condición, entre as obras tamén funciona con valores de cadea. Se queremos producir unha lista de todos os países que comezan con V, W ou X, poderiamos usar a consulta:

SELECCIONAR produtoName FROM products DONDE ProductName ENTRE "A" e "D"

Que produce o resultado:

ProductName ------- Xarope anís Chai Chang Chef Anton's Gumbo Mix Chef Anton's Cajun Seasoning

A cláusula WHERE é unha parte poderosa da linguaxe SQL que permite restrinxir os resultados a valores que se atopan dentro dos intervalos especificados. É moi comúnmente usado para axudar a expresar a lóxica empresarial e debe ser parte do conxunto de ferramentas de cada profesional da base de datos.

A miúdo é útil incorporar cláusulas comúns nun procedemento almacenado para que sexa accesible para aqueles que non teñen coñecemento de SQL.