Entre incluye extremos o no. ENTRE en T-SQL: ejemplos de uso del operador lógico. Un ejemplo del uso del operador ENTRE en una declaración condicional IF

El operador ENTRE realiza una prueba booleana de un valor frente a un rango de valores. El operador devuelve VERDADERO si el valor está dentro del rango y FALSO si el valor no está dentro del rango. Si algún valor en el rango es NULL (desconocido), entonces el resultado será NULL.

El operador EXISTS es semánticamente equivalente al operador ANY/SOME.

Sintaxis de SQL 2003

SELECCIONAR * DONDE expresión ENTRE límite_inferior Y límite_superior

Palabras clave

DONDE expresión

Prueba una expresión escalar (como una columna) con el rango de valores que se encuentra entre el límite superior y el límite inferior.

ENTRE límite_inferior Y límite_superior

Compara una expresión con límite_inferior y límite_superior. La comparación incluye valores extremos, es decir, es lo mismo que “donde la expresión [no] es mayor o igual al límite_inferior y menor o igual al límite_superior>.

Reglas generales

El operador ENTRE se utiliza para probar una expresión frente a un rango de valores. El operador BETWEEN se puede utilizar con cualquier tipo de datos excepto BLOB, CLOB, NCLOB, REF y ARRAY.

Por ejemplo, necesitamos ver el número de obras (title_id) cuyas ventas en lo que va del año (ytd_sales) están en el rango de 10 000 a 20 000.

SELECCIONE title_id DE títulos DONDE ytcLsales ENTRE 10000 Y 20000<).

El operador ENTRE incluye límites de rango. En este caso, el resultado incluirá los valores 10000 y 20000. Si necesita buscar sin incluir límites de rango, debe usar mayor que (>) y menor que (< 20000

SELECCIONE title_id DE títulos DONDE ytd.sales > 10000 Y ytd_sales

El operador NOT le permite buscar más allá del rango especificado por el operador ENTRE. Por lo tanto, puede encontrar los números de todos los trabajos (title_id) que no se publicaron en 2003.

Algunos programadores son muy exigentes acerca de cómo se utiliza la palabra clave AND en las cláusulas WHERE. Para evitar que alguien que no esté familiarizado con el código piense que el operador AND utilizado en la declaración BETWEEN es un operador lógico, puede encerrar toda la cláusula BETWEEN entre paréntesis.

Diferencias en implementaciones en diferentes plataformas.

Todas las plataformas admiten el operador BETWEEN como se describe anteriormente.

Cualquier consulta creada para trabajar en la base de datos simplifica el acceso a la información necesaria. En un post anterior hablé de operadores comunes condiciones. En este mismo post hablaré de operadores que te permitirán crear consultas que pueden proporcionar información más detallada de interés, que, al mismo tiempo, no es tan fácil de encontrar con consultas con los operadores AND, OR.
Uno de los operadores especiales es EN. Este operador le permite configurar el rango requerido para mostrar la información requerida. Volvamos a los datos sobre deudores.

Deudores

número Mes Año Nombre Ciudad DIRECCIÓN Deuda
0001 Julio2012 IvánovStávropolStavropolskaya, 150000
0002 Diciembre2019 KononovtártaroZagorodnaya, 254684068
0003 Puede2013 YamshinMijailovskSélskaya, 48 años.165840
0004 Agosto2012 PreneyStávropolCentro, 1646580
... ... ... ... ... ... ...
9564 Marzo2015 ulievaDeminoInternacional, 156435089
9565 Octubre2012 PávlovaStávropolVokzálnaya, 37 años.68059
9566 Enero2012 UryupaMijailovskFontannaya, 19 años51238
9567 Noviembre2017 valetovtártaroVyezdnaya, 65 años789654

Supongamos que necesita seleccionar a todos los deudores de la ciudad de Stavropol o Tatarka. Por analogía con la entrada anterior, deberá utilizar la solicitud
SELECCIONAR *
DE deudores
DONDE Ciudad = "Stavropol"
O Ciudad = "Tatarka";

En primer lugar, el código resultante es engorroso. Al utilizar operadores especiales, puede obtener un código más compacto.
SELECCIONAR *
DE deudores
DÓNDE Ciudad EN (“Stavropol”, “Tatarka”);

El resultado será

Sigamos la lógica del programa. Con las palabras clave SELECT, FROM y WHERE. Pero entonces aparece el operador IN. Establece al programa una secuencia de acciones; es necesario ver la información de la base de datos contenida en la columna "Ciudad". Y para mostrar es necesario seleccionar los datos "Stavropol" y "Tatarka".
Permítanme considerar un ejemplo en el que es necesario hacer una selección en función de ciertos montos de deuda.
SELECCIONAR *
DE deudores
DÓNDE ENTRA la deuda (435089, 789654, 684068);

El resultado será el siguiente

Aquellos. el operador IN escanea toda la base de datos en busca de la presencia de los parámetros de selección de información especificados.
La situación es diferente usando otro operador especial. ENTRE. Si el operador EN información considerada con parámetros exclusivamente especificados, entonces el operador ENTRE- entre ciertos rangos. Sin embargo, no se debe establecer una analogía entre la traducción del inglés de este operador y su finalidad real. Si especifica ENTRE 1 Y 5, esto no significa que los números 2, 3 y 4 serán verdaderos. SQL simplemente percibe este operador como un valor determinado que se puede encontrar entre otros valores. En un ejemplo se verá así.
SELECCIONAR *
DE deudores
DONDE Deudas ENTRE 30000 Y 100000;

El resultado será

Es decir, SQL aceptó el operador. ENTRE como cualquier valor en el rango de 30000 a 100000 en la columna "Deudas".
Además de especificar rangos aproximados en términos numéricos, puede especificar rangos alfabéticos, que muestran información que contiene las primeras letras del rango especificado. Pero hay un punto interesante aquí. Creemos la siguiente solicitud.
SELECCIONAR *
DE deudores
DONDE Nombre ENTRE "I" Y "P";

Luego se mostrarán los siguientes datos

Una pregunta lógica: “¿Por qué los deudores con apellido PAG reni y PAG¿Avlova? ¡Después de todo, las primeras letras de sus apellidos están incluidas en el rango especificado!" Las letras están incluidas, pero los apellidos no. Esto se debe a que el lenguaje SQL en este tipo de consultas solo acepta la longitud de la búsqueda. En otras palabras, la longitud de la cadena "P" en la consulta es de un carácter, y la longitud de la cadena "Preni" y "Pavlova" en la base de datos es cinco y siete, respectivamente. apellido ". Y vanov" cae dentro del rango porque el rango comienza con Y, como principio, de un carácter.

Determina si el valor de una expresión se encuentra dentro del rango especificado. Este operador se puede utilizar en sentencias SQL.

Sintaxis

expresión [No] Entrevalor1Yvalor2

Sintaxis del operador Entre...y incluye los siguientes componentes:

Notas

Si el valor del componente expresión esta entre valor1 Y valor2(inclusive), operador Entre...y valor de retorno Verdadero; de lo contrario se devuelve el valor FALSO. Habilitar un operador booleano No resulta en verificar la condición opuesta (suponiendo que el componente expresión está fuera del rango definido por los componentes valor1 Y valor2).

Al usar entren...y Puede determinar si el valor de un campo se encuentra dentro de un rango numérico específico. El siguiente ejemplo determina si un pedido se envió a una dirección con un código postal en un rango determinado. Si el código postal está entre 98101 y 98199, la función si devuelve Local. De lo contrario, devuelve No local.

SELECCIONE IIf(Código postal entre 98101 y 98199, “Local”, “No local”) DE Editores

Si expresión, valor1 o valor2 tiene el valor nulo, Entre...y valor de retorno Nulo.

Debido a que los caracteres comodín, como el asterisco (*), se consideran literales, no se pueden utilizar en una declaración. Entre...y. Por ejemplo, no puede utilizar expresiones como 980* y 989* para buscar todos los índices que comiencen con números en el rango de 980 a 989. Hay dos formas de resolver este problema. Puede agregar una expresión a la solicitud que pasa al operador. Entre...y primeros tres personajes campo de texto. Otra opción es agregar dígitos adicionales a los límites inferior y superior del intervalo que se está probando, en este caso de 98000 a 98999, o de 98000 a 98999-9999 si se utilizan códigos postales extendidos (se deben omitir los códigos postales inferiores -0000, de lo contrario, se omitirá el índice 98000 si algunos índices tienen extensiones y otros no).

Cuando se trabaja con DBMS relacionales, en los que los datos se almacenan en forma tabular, los usuarios a menudo se enfrentan a la tarea de seleccionar valores que están incluidos (no incluidos) en un rango determinado. El lenguaje SQL le permite especificar un conjunto al que debe (o no) pertenecer un valor utilizando varias opciones: el operador En, el operador Me gusta, una combinación de condiciones mayor que - menor que, así como el operador SQL Entre. La descripción y los ejemplos de este artículo se centrarán en la última opción.

Operador "Entre" en SQL: sintaxis, restricciones

El operador SQL entre se traduce literalmente como "entre". Su uso le permite establecer una restricción "Desde y Hasta" en un campo específico, y si el siguiente valor cae dentro del rango, el predicado tomará el valor "Verdadero" y el valor se incluirá en la selección final.

La sintaxis del operador es extremadamente sencilla:

Donde t1.n entre 0 y 7

Como vemos, después palabra clave entre debe especificar el valor del límite inferior del rango, luego Y y el valor del límite superior.

Enumeremos con qué tipos de datos puede trabajar el operador entre SQL:

  1. Con números: enteros y fraccionarios.
  2. Con fechas.
  3. Con texto.

Este operador entre SQL tiene ciertas características. Conozcámoslos:

  1. Cuando se trabaja con números y fechas, los valores de restricción Desde y Hasta se incluyen en la selección.
  2. El valor del límite inferior del rango debe ser menor que el valor del límite superior; de lo contrario, no se mostrará nada porque la condición no es lógicamente válida. Debe tener especial cuidado cuando se incluyen variables en la condición en lugar de valores específicos.

Cuando se trabaja con texto, el valor del límite superior del rango no se incluirá en la selección a menos que se especifique con mucha precisión. En las siguientes secciones consideraremos esta característica más detalles.

Selección de números y fechas en un rango determinado.

Preparemos una tabla con datos sobre los gerentes que trabajan en la organización. La tabla tendrá la siguiente estructura:

Nombre del campo

tipo de datos

Descripción

Identificador único de empleado

Texto

apellido del empleado

Texto

Nombre del empleado

Apellido

Texto

Segundo nombre del empleado

Texto

Género del empleado (M/F)

fecha_recepción

Fecha/hora

Fecha en la que se contrató al empleado

Número_de_niños

Numérico

Número de hijos que tiene el empleado

Llenemos la tabla con los siguientes datos:

Código

Apellido

Nombre

Apellido

Piso

fecha_recepción

Número_de_niños

Alexandrova

Nikolaevna

Stepánovich

Vinogradov

Pávlovich

Alejandro

Borísovich

Vishnyakov

Alexandrovich

Trópnikov

serguéievich

Zhemchugov

Vasílievich

Konstantinovna

Nikolaevich

Creemos entre, que nos ayudará a seleccionar todos los empleados que tengan 2 o 3 hijos:

El resultado serán tres líneas con datos sobre empleados llamados Shumilin, Tropnikov y Avdeeva.

Ahora seleccionaremos empleados contratados desde el 1 de enero de 2005 al 31 de diciembre de 2016. Cabe señalar que diferentes DBMS le permiten escribir fechas en condiciones de diferentes maneras. En la mayoría de los casos, la fecha simplemente se fuerza en el formato día-mes-año (o lo que sea más conveniente) y se escribe en formato único o en el DBMS, la fecha se incluye entre el signo "#". Ejecutemos un ejemplo basado en él:

SELECCIONAR Gerentes.*, Gerentes.Recepción_fecha

DE Gerentes

DÓNDE Gerentes. Fecha_recepción entre el #1/1/2005# y el #31/12/2016#

El resultado serán cinco empleados contratados durante el período señalado inclusive.

Trabajando en el medio con cuerdas

Un problema muy común que hay que resolver cuando se trabaja con apellidos de empleados es la necesidad de seleccionar solo aquellos cuyos apellidos comienzan con una letra determinada. Intentemos cumplir con la solicitud y seleccionar empleados cuyos apellidos comiencen con apellidos de A a B:

El resultado es el siguiente:

Como puede ver, dos empleados con un apellido que comienza con la letra B no fueron incluidos en la lista. ¿Con qué está conectado esto? La cuestión es exactamente cómo el operador compara cadenas de longitud desigual. La línea "B" es más corta que la línea "Vinogradov" y está rellena de espacios. Pero al ordenar alfabéticamente, los espacios serán caracteres iniciales y el apellido no se incluirá en la selección. Diferentes DBMS ofrecen soluciones de diferentes maneras. este problema, pero a menudo la forma más fácil de estar seguro es especificar la siguiente letra del alfabeto en el rango:

Al ejecutar de esta solicitud el resultado nos satisfará completamente.

Este matiz existe sólo cuando se trabaja con datos de caracteres, pero muestra que incluso cuando se trabaja con tales operadores simples, como entre, hay que tener cuidado.

En este artículo veremos T-SQL ENTRE operador lógico Aprenderá qué es este operador y cómo utilizarlo. Y, por supuesto, veremos ejemplos. consulta SQL ov usando el operador ENTRE.

ENTRE operador en T-SQL

ENTRE es un operador booleano T-SQL que especifica el rango que se va a probar. Es decir, con BETWEEN podemos comprobar si un valor está dentro de un rango determinado.

Sintaxis

expresión_prueba[ NO ] ENTRE comenzar_expresión Y expresión_final

Descripción de los argumentos.

  • test_expression: una expresión sujeta a pruebas de pertenencia en el rango desde start_expression hasta end_expression;
  • comenzar_expresión – expresión que caracteriza el comienzo del rango;
  • end_expression – expresión que caracteriza el final del rango.

Todas las expresiones deben tener el mismo tipo de datos.

El operador ENTRE devuelve los siguientes valores (booleanos):

  • VERDADERO: si el valor del argumento test_expression es mayor o igual que el valor de start_expression y menor o igual que el valor de end_expression, es decir, test_expression está en el rango desde begin_expression hasta end_expression;
  • FALSO: si el valor del argumento test_expression no está en el rango desde begin_expression hasta end_expression.

Al usar NO palabra clave podemos invertir el resultado del predicado, en otras palabras, NO ENTRE significa que queremos verificar el valor para ver si no está dentro del rango dado.

En este caso, el operador NO ENTRE devolverá VERDADERO si el valor del argumento expresión_prueba no está en el rango desde expresión_inicial hasta expresión_final.

Si al menos una de las expresiones en BETWEEN contiene el valor NULL, el resultado no estará definido.

¡Nota! Les recuerdo que siempre deben recordar que existen valores como NULL (este no está vacío o 0, esto es la ausencia de un valor), que son procesados ​​por el servidor SQL de una manera especial; Las consultas SQL que involucran valores NULL pueden no ser obvias e impredecibles.

¡Nota! Si eres un programador novato y quieres aprender el lenguaje T-SQL desde cero, te recomiendo leer mi libro “The T-SQL Programmer's Way”, en el que hablo en detalle sobre los conceptos básicos del lenguaje T-SQL, y También preste mucha atención a las construcciones avanzadas.

Datos de origen para ejemplos

Mi servidor es Microsoft SQL Server 2016 Express. Por ejemplo, imaginemos que tenemos una tabla TestTable y contiene los siguientes datos ( lista de productos con indicación de precio). Agrego filas a la tabla usando la instrucción INSERT INTO.

Crear una tabla CREAR TABLA TestTable( IDENTITY(1,1) NOT NULL, (100) NOT NULL, NULL) GO --Agregar filas a la tabla INSERT INTO TestTable(ProductName, Price) VALUES (" Unidad del sistema", 300), ("Monitor", 200), ("Teclado", 100), ("Ratón", 50), ("Impresora", 200), ("Escáner", 150), ("Teléfono", 250), ("Tableta", 300) GO --Seleccionar datos SELECCIONAR * DE TestTable

Ejemplo de uso del operador BETWEEN en la cláusula WHERE

Escribamos una consulta SQL que nos mostrará todos los productos cuyo precio esté en el rango de 100 a 200 rublos inclusive.

Condición usando el operador ENTRE SELECCIONAR ID de producto, Nombre de producto, Precio DESDE TestTable DONDE Precio ENTRE 100 Y 200

Podríamos escribir esta consulta sin utilizar el operador ENTRE, por ejemplo, la siguiente consulta SQL es absolutamente equivalente.

Condición que utiliza operadores de comparación SELECCIONE ProductID, ProductName, Price FROM TestTable DONDE Precio >= 100 AND Price<= 200

Como puede ver, el resultado es el mismo, pero en el caso de ENTRE la condición parece más visual y comprensible, además, escribimos la expresión para verificar (Precio) solo una vez, en el caso de los operadores de comparación dos veces.

Un ejemplo del uso del operador ENTRE en una declaración condicional IF

El operador BETWEEN se puede utilizar no solo en la cláusula WHERE, sino también en otras construcciones del lenguaje T-SQL, por ejemplo, en construcción condicional SI. En el siguiente ejemplo, comprobaremos la variable @TestVar para ver si el valor de esta variable está en el rango de 1 a 10 y, de ser así, realizaremos la acción que necesitemos, por ejemplo simplemente enviaré una solicitud SELECT. .

DECLARAR @TestVar INT = 5 SI @TestVar ENTRE 1 Y 10 SELECCIONAR "La variable @TestVar está en el rango de 1 a 10" AS [Resultado]


Ejemplo de uso del operador NO ENTRE

Ahora escribamos una consulta usando la palabra clave NOT, por ejemplo, necesitamos mostrar todos los productos cuyo precio no esté en el rango de 100 a 200 rublos ( También adjunto un ejemplo equivalente usando operadores de comparación.).

Condición que usa el operador NO ENTRE SELECCIONAR ID de producto, Nombre de producto, Precio DE Tabla de prueba DONDE Precio NO ENTRE 100 Y 200 --Condición que usa operadores de comparación SELECCIONAR ID de producto, Nombre de producto, Precio DE Tabla de prueba DONDE Precio< 100 OR Price > 200

En este caso, nos entregaron todos los bienes cuyo precio sea inferior a 100 o superior a 200 rublos.

En el lenguaje T-SQL, además del operador ENTRE, existen otros operadores lógicos, por ejemplo, el operador EXISTS, que en algunos casos puede resultar muy útil, también lo comentamos en este sitio;

¡Eso es todo lo que tengo por ahora!

bluetooth