Udostępnij za pośrednictwem


Niektóre | ANY (języka Transact-SQL)

Porównuje wartość wartość skalarna z jedno-kolumna zbioru wartości.SOME i ANY są równoważne.

Topic link iconKonwencje składni języka Transact-SQL

scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
     { SOME | ANY } ( subquery ) 

Argumenty

  • scalar_expression
    Jest ważne w każdym wyrażenie.

  • { = | <> | != | > | >= | !> | < | <= | !< }
    Jest dowolny operator porównania prawidłowy.

  • NIEKTÓRE | WSZYSTKIE
    Określa, należy dokonać porównania.

  • subquery
    Czy Podkwerenda ma zestaw wyników o jedną kolumna.Typ danych kolumna zwracane muszą być tego samego typu danych jako scalar_expression.

Typy wynik

Boolean

Wartość wyniku

SOME or ANY returns TRUE when the comparison specified is TRUE for any pair (scalar_expression**,**x) where x is a value in the single-column set; otherwise, returns FALSE.

Remarks

SOME wymaga scalar_expression do porównywania pozytywnie na co najmniej jedną wartość zwracana przez podkwerenda. Dla instrukcji, które wymagają scalar_expression Aby porównać pozytywnie, aby każda wartość zwracaną przez podkwerendę, zobacz WSZYSTKIE (języka Transact-SQL). Na przykład, jeżeli wartości 2 i 3, w wyniku podkwerenda scalar_expression = Niektóre (podkwerenda) będą interpretowane jako wartość TRUE dla scalar_express 2. Jeżeli wartości 2 i 3, w wyniku podkwerenda scalar_expression = ALL (podkwerenda) będą interpretowane jako wartość FALSE, ponieważ niektóre z wartości podkwerenda (wartość 3) czy nie spełnia kryteria określone w wyrażenie.

Przykłady

A.Prosty przykład

Poniższe instrukcje utworzyć prostą tabela i dodać wartości 1, 2, 3 i 4 kolumna IDENTYFIKATORA.

CREATE TABLE T1
(ID int) ;
GO
INSERT T1 VALUES (1) ;
INSERT T1 VALUES (2) ;
INSERT T1 VALUES (3) ;
INSERT T1 VALUES (4) ;

Następująca kwerenda zwraca wartość TRUE, ponieważ 3 jest mniejsza niż niektóre z wartości w tabela.

IF 3 < SOME (SELECT ID FROM T1)
PRINT 'TRUE' 
ELSE
PRINT 'FALSE' ;

Następująca kwerenda zwraca wartość FALSE, ponieważ 3 nie jest mniejsza niż średnia wszystkich wartości w tabela.

IF 3 < ALL (SELECT ID FROM T1)
PRINT 'TRUE' 
ELSE
PRINT 'FALSE' ;

B.Przykład praktyczne

Poniższy przykład tworzy procedura przechowywana, która określa, czy wszystkie składniki z określonym SalesOrderID w AdventureWorks bazy danych można wyprodukować w ciągu określonej liczby dni. W przykładzie użyto do utworzenia listy liczby podkwerenda DaysToManufacture wartość dla wszystkich składników specjalnych SalesOrderID, a następnie sprawdza, czy wartości zwróconych przez podkwerendę jest większa niż liczba dni określona. Jeśli każda wartość DaysToManufacture która jest zwracana jest mniejsza niż liczba dostarczonych, warunek jest spełniony (TRUE) i drukowany jest pierwszy komunikat.

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.' ;

To test the procedure, execute the procedure by using the SalesOrderID49080 which has one component that requires 2 days and two components that require 0 days.Pierwsza instrukcja poniżej spełnia kryteria.Nie zawiera drugą kwerendę.

EXECUTE ManyDaysToComplete 49080, 2 ;

Here is the result set.

All items for this order can be manufactured in the specified number of days or less.

EXECUTE ManyDaysToComplete 49080, 1 ;

Here is the result set.

At least one item for this order cannot be manufactured in specified number of days.