SOME | ANY (Transact-SQL)
Изменения: 17 июля 2006 г.
Сравнивает скалярное значение с набором значений из одного столбца. Ключевые слова SOME и ANY эквивалентны.
Синтаксические обозначения в Transact-SQL
Синтаксис
scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < }
{ SOME | ANY } ( subquery )
Аргументы
- scalar_expression
Любое допустимое выражение.
- { = | <> | != | > | >= | !> | < | <= | !< }
Любой допустимый оператор сравнения.
- SOME | ANY
Указывает на необходимость сравнения.
- subquery
Вложенный запрос с результирующим набором из одного столбца. Тип данных возвращаемого столбца должен совпадать с типом данных аргумента scalar_expression.
Замечания
Для ключевого слова SOME необходим аргумент scalar_expression, чтобы провести непосредственное сравнение по крайней мере одного значения, возвращенного вложенным запросом. Инструкции, которым необходим аргумент scalar_expression для сравнения каждого значения, возвращенного вложенным запросом, перечислены в разделе ALL (Transact-SQL). Например, если вложенный запрос возвращает значения 2 и 3, то при scalar_expression = SOME будет возвращаться TRUE для значения scalar_expression, равного 2. Если вложенный запрос возвращает значения 2 и 3, то при scalar_expression = ALL будет возвращаться FALSE, так как некоторые значения вложенного запроса (значение 3) не отвечают критериям этого выражения.
Типы результата
Boolean
Значение результата
При использовании ключевого слово SOME или ANY значение TRUE возвращается, если указанное сравнение имеет значение TRUE для любой пары (scalar_expression**,**x), где x является одним из значений набора из одного столбца; иначе возвращается значение FALSE.
Примеры
В следующем примере показано создание хранимой процедуры, определяющей, могут ли в течение заданного времени быть выполнены все заказы с указанным SalesOrderID
из базы данных AdventureWorks
. В этом примере для создания списка количества значений DaysToManufacture
всех компонентов SalesOrderID
используется вложенный запрос, а затем проводится проверка того, являются ли значения, возвращаемые вложенным запросом, больше числа заданных дней. Если каждое возвращаемое значение DaysToManufacture
меньше заданного значения, то условие равно TRUE и печатается первое сообщение.
USE AdventureWorks ;
GO
CREATE PROCEDURE ManyDaysToComplete @OrderID int, @NumberOfDays int
AS
IF
@NumberOfDays < SOME
(
SELECT DaysToManufacture
FROM Sales.SalesOrderDetail
JOIN Production.Product
ON Sales.SalesOrderDetail.ProductID = Production.Product.ProductID
WHERE SalesOrderID = @OrderID
)
PRINT 'At least one item for this order cannot be manufactured in specified number of days.'
ELSE
PRINT 'All items for this order can be manufactured in the specified number of days or less.' ;
Для проверки этой процедуры выполните ее, используя SalesOrderID``49080
, имеющий один заказ, требующий на выполнение 2
дня, и два заказа, требующие немедленного выполнения. Первая из нижеследующих инструкций отвечает этим критериям. Второй запрос этим критериям не отвечает.
EXECUTE DaysToBuild 49080, 2 ;
Ниже приводится результирующий набор.
All items for this order can be manufactured in specified number of days or less.
EXECUTE DaysToBuild 49080, 1 ;
Ниже приводится результирующий набор.
Some items for this order cannot be manufactured in specified number of days or less.
См. также
Справочник
CASE (Transact-SQL)
Функции (Transact-SQL)
Операторы (Transact-SQL)
SELECT (Transact-SQL)
Предложение WHERE (Transact-SQL)
IN (Transact-SQL)
Другие ресурсы
Операторы сравнения с модификаторами ANY, SOME или ALL
Основы вложенных запросов
Типы вложенных запросов
Справка и поддержка
Получение помощи по SQL Server 2005
Журнал изменений
Версия | Журнал |
---|---|
17 июля 2006 г. |
|