如何在一个查询中使用LIKE和IN运算符?

neo*_*orp 4 sql oracle oracle11g sql-like

我的简单sql语句是这样的:

SELECT USERNAME FROM ALL_USERS;
Run Code Online (Sandbox Code Playgroud)

但我想从结果中过滤系统用户.我搜索但找不到Oracle提供的任何内容; 所以我尝试了这样的声明,它不起作用:

select username from all_users where username not like '%SH%' 
    or username not like '%SYS%' 
    or username not in ('ANONYMOUS',            
                        'DBSNMP',
                        'MGMT_VIEW',
                        'ORDPLUGINS',
                        'OUTLN',
                        'SI_INFORMATION_SCHEMA',
                        'WK_TEST',
                        'WKPROXY',
                        'XDB'); 
Run Code Online (Sandbox Code Playgroud)

这不起作用.我应该如何修改我的查询以获得所需的输出,或者可能有oracle提供的东西来获取预定义的系统帐户?

小智 5

其他答案略有不同:不是(A或B或C)=不是A而不是B而不是C,所以你最初想要的是:

select username from all_users 
where not (username like '%SH%' 
           or username like '%SYS%' 
           or username in ('ANONYMOUS',            
                        'DBSNMP',
                        'MGMT_VIEW',
                        'ORDPLUGINS',
                        'OUTLN',
                        'SI_INFORMATION_SCHEMA',
                        'WK_TEST',
                        'WKPROXY',
                        'XDB')
           ); 
Run Code Online (Sandbox Code Playgroud)