Oracle Any/Some運算子

來源:互聯網
上載者:User

標籤:blog   exists   com   轉換   product   src   category   desc   技術   

在本教程中,您將學習如何使用Oracle ANY運算子將值與列表或子查詢進行比較。

Oracle ANY運算子簡介

Oracle ANY運算子用於將值與子查詢返回的值或結果集列表進行比較。下面舉例說明ANY運算子與列表或子查詢一起使用時的文法:

operator ANY ( v1, v2, v3)operator ANY ( subquery)

在這個文法中:

  • ANY運算子前面必須有一個運算子,例如:=!=>>=<<=
  • 列表或子查詢必須用圓括弧包圍。

使用ANY運算子將值與列表進行比較時,Oracle將初始條件擴充到列表的所有元素,並使用OR運算子將它們組合,如下所示:

SELECT    *FROM    table_nameWHERE    c > ANY (        v1,        v2,        v3    );

Oracle將上述查詢轉換為以下內容:

SELECT    *FROM    table_nameWHERE    c > v1    OR c > v2    OR c > v3;

如果使用ANY運算子將一個值與子查詢返回的結果集進行比較,則Oracle使用EXISTS運算子將查詢轉換為等效的查詢,而不使用ANY運算子。 例如,以下語句返回列表價格大於類別編號:1中產品的任何標價的所有產品:

SELECT    product_name,    list_priceFROM    productsWHERE    list_price > ANY(        SELECT            list_price        FROM            products        WHERE            category_id = 1    )ORDER BY    product_name;

由於查詢與ANY運算子一起使用子查詢,因此Oracle執行了單個轉換,如下所示:

SELECT    product_name,    list_priceFROM    products p1WHERE    EXISTS(        SELECT            list_price        FROM            products p2        WHERE            category_id = 1            AND p1.list_price > p2.list_price    )ORDER BY    product_name;

請注意,如果子查詢不返回任何行,則以下條件的計算結果為false

operator ANY (subquery)

因此,整個查詢不返回行:

SELECT    *FROM    table_nameWHERE    col operator ANY(subquery);

在Oracle中,SOMEANY的行為完全相同,因此它們完全可以互換。

Oracle ANY運算子的例子

如果子查詢返回行或列表具有值,則以下語句適用於ANY運算子:

1. col = ANY ( list )

如果col在列表中匹配一個或多個值,則運算式的計算結果為true,例如:

SELECT    product_name,    list_priceFROM    productsWHERE    list_price = ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1;

執行上面範例程式碼,得到以下結果 -

2. col != ANY(list)

如果列與列表中的一個或多個值不匹配,則運算式的計算結果為true。參考以下查詢語句 -

SELECT    product_name,    list_priceFROM    productsWHERE    list_price != ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

3. col > ANY (list)

如果col大於列表中的最小值,則運算式的計算結果為true

SELECT    product_name,    list_priceFROM    productsWHERE    list_price > ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

3. col >= ANY (list)

如果col大於或等於列表中的最小值,則運算式的計算結果為true。參考以下查詢語句 -

SELECT    product_name,    list_priceFROM    productsWHERE    list_price >= ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

5. col < ANY (list)

如果col小於列表中的最大值,則運算式的計算結果為true

SELECT    product_name,    list_priceFROM    productsWHERE    list_price < ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

6. col <= ANY (list)

如果col小於或等於列表中的最大值,則運算式的計算結果為true

SELECT    product_name,    list_priceFROM    productsWHERE    list_price <= ANY(        2200,        2259.99,        2269.99    )    AND category_id = 1ORDER BY    list_price DESC;

執行上面範例程式碼,得到以下結果 -

在本教程中,您已學習如何使用Oracle ANY運算子將值與列表或子查詢進行比較。


Oracle Any/Some運算子

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.