В этом учебном материале вы узнаете, как использовать Oracle условие IN с синтаксисом и примерами.
Описание
Oracle условие IN (называемое, также оператор IN) определяет, соответствует ли значение или список значений выражению в указанном результирующем наборе SELECT, INSERT, UPDATE или DELETE.
Синтаксис
Синтаксис для условия IN в Oracle/PLSQL:
Параметры или аргументы
expression - Выражение для проверки.
value1, value2, ... value_n - Значения для проверки выражения.
Примечание
Oracle условие IN будет возвращать записи, где значение expression совпадает с value1, value2, ... или value_n.
В IN списке допускается не больше 1000 констант.
Пример с символами
Рассмотрим пример Oracle условия IN, с использованием символьных значений.
Ниже приводится Oracle предложение SELECT, которое использует условие IN для сравнения символьных значений:
1 2 3 |
SELECT * FROM customers WHERE customer_name IN ('IBM', 'Hewlett Packard', 'Microsoft'); |
Этот пример Oracle условия IN возвратит все строки, где customer_name или 'IBM', 'Hewlett Packard', или 'Microsoft'. Поскольку в SELECT используется * , то все поля из таблицы customers появится в результирующем наборе.
Пример выше эквивалентен следующему запросу SELECT:
1 2 3 4 5 |
SELECT * FROM customers WHERE customer_name = 'IBM' OR customer_name = 'Hewlett Packard' OR customer_name = 'Microsoft'; |
Как вы видите, используя условие IN, запрос SELECT становится читабельнее и более эффективнее.
Пример с числами
Рассмотрим пример Oracle условия IN, с использованием числовых значений.
Например:
1 2 3 |
SELECT * FROM orders WHERE order_id IN (10000, 10001, 10003, 10005); |
Этот пример Oracle условия IN возвратит все orders, где order_id является или 10000 или 10001 или 10003 или 10005.
Пример выше эквивалентен следующему запросу SELECT:
1 2 3 4 5 6 |
SELECT * FROM orders WHERE order_id = 10000 OR order_id = 10001 OR order_id = 10003 OR order_id = 10005; |
Пример использования оператора NOT
И, наконец, рассмотрим пример условия IN, с использованием Oracle оператора NOT.
Например:
1 2 3 |
SELECT * FROM customers WHERE customer_name NOT IN ( 'IBM', 'Hewlett Packard', 'Microsoft'); |
Этот пример Oracle условия IN возвратит все строки, где customer_name является не 'IBM', 'Hewlett Packard', или 'Microsoft'. Иногда гораздо эффективнее перечислить те значения, которые вы не хотите получить в результате, в отличие от тех значений, которые вы хотите получить.