你会用Oracle多字段in吗?

2025-09-27 05:49:27

1、先看看Oracle单个字段使用in的场景

SQL:

select t.TABLE_NAME, t.TABLESPACE_NAME

  from user_tables t

 where t.TABLESPACE_NAME in ('EXAMPLE', 'USERS');

你会用Oracle多字段in吗?

2、in的另一种常见用法

SQL:

select t.TABLE_NAME, t.TABLESPACE_NAME

  from user_tables t

 where t.TABLESPACE_NAME in (select 'EXAMPLE' from dual);

你会用Oracle多字段in吗?

3、多个字段怎么写呢?

这样的:

select t.TABLE_NAME, t.TABLESPACE_NAME

  from user_tables t

 where (t.TABLE_NAME, t.TABLESPACE_NAME) 

     in ('LOCATIONS', 'EXAMPLE');

你会用Oracle多字段in吗?

4、Let's have a try!

Excepton has happened!

ORA-00920:无效的关系运算符

WHY?

你会用Oracle多字段in吗?

5、试试另一个写法,如下所示。

执行下看看先。

成功了!!!

SQL:

select t.TABLE_NAME, t.TABLESPACE_NAME

  from user_tables t

 where (t.TABLE_NAME, t.TABLESPACE_NAME) 

 in (select 'LOCATIONS', 'EXAMPLE' from dual);

你会用Oracle多字段in吗?

6、可以看到成功执行的多字段in,结果一个table,即是一个二维数组。

刚才失败尝试中使用in ('LOCATIONS', 'EXAMPLE')的描述,和一个字段时的用法完全一样。

Oracle会认为(不管哪个语法检验器会这样认为)in左右两边的字段数不匹配,

不匹配就直接报错了。

因此正常的写法,多个字段时in后面应该是一个二维数组,sql如下。

执行下看看。

成功了!!!

SQL:

select t.TABLE_NAME, t.TABLESPACE_NAME

  from user_tables t

 where (t.TABLE_NAME, t.TABLESPACE_NAME) 

 in (

    ('LOCATIONS', 'EXAMPLE')

    );

你会用Oracle多字段in吗?

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢