Вопрос 4: Извлечение данных из определенного диапазона значений. Использование списков и неизвестных значений в качестве критериев поиска.


Извлечение данных из определенного диапазона значений

Синтаксис

test_expression [ NOT ] BETWEEN begin_expression AND end_expression

Аргументы

test_expression Выражение для проверки на принадлежность диапазону в пределах от begin_expression до end_expression. Выражение test_expression должно иметь тот же тип данных, что и begin_expression и end_expression.

NOT Указывает, что результат предиката должен быть инвертирован.

begin_expression Любое допустимое выражение. Выражение begin_expression должно иметь тот же тип данных, что и test_expression и end_expression.

end_expression Любое допустимое выражение. Выражение end_expression должно иметь тот же тип данных, что и test_expression и begin_expression.

AND Служит заполнителем, который указывает на то, что значение test_expression должно находиться в диапазоне от begin_expression до end_expression.

Значение результата

Оператор BETWEEN возвращает значение TRUE, если значение аргумента test_expression больше значения аргумента begin_expression или равно ему и меньше значения аргумента end_expression или равно ему.

Оператор NOT BETWEEN возвращает значение TRUE, если значение аргумента test_expression меньше значения аргумента begin_expression или больше значения аргумента end_expression.

Пример

SELECT principal_id, name 
FROM sys.database_principals
WHERE type = 'R' AND principal_id BETWEEN 16385 AND 16390;
GO

Использование списков в качестве критериев поиска

Синтаксис

test_expression [ NOT ] IN ( subquery | expression [ ,...n ] )

Аргументы

test_expression Любое допустимое выражение expression.

subquery Вложенный запрос, содержащий результирующий набор, состоящий из одного столбца. Этот столбец должен иметь тот же тип данных, что и аргумент test_expression.

expression[ , ... n ] Список выражений для поиска совпадения. Все выражения должны иметь тот же тип, что и аргумент test_expression.

Значение результата

Если значение аргумента test_expression равно одному из значений, возвращенных вложенным запросом subquery или одному из значений, содержащихся в списке expression (где значения разделяются запятыми), результирующее значение равно TRUE. В противном случае оно равно FALSE.

Предложение NOT IN инвертирует значение susbquery или expression.

Пример

SELECT p.FirstName, p.LastName, e.JobTitle  
FROM Person.Person AS p  
JOIN HumanResources.Employee AS e  
    ON p.BusinessEntityID = e.BusinessEntityID  
WHERE e.JobTitle IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant');  
GO

Использование неизвестных значений в качестве критериев поиска

IS NULL, IS NOT NULL

SELECT BusinessEntityID, NationalIDNumber, JobTitle
FROM HumanResources.Employee
WHERE JobTitle IS NULL && NationalIDNumber IS NOT NULLs;

results matching ""

    No results matching ""