在oracle中提取数据包含三列A、B、C,要求条件是C列字段不能包含‘管理费’、‘咨询费’、‘服务费’、‘维修费’,如何设置条件,通用的写法是这样的:
```sql
SELECT A, B, C
FROM your_table
WHERE C NOT LIKE '%管理费%'
AND C NOT LIKE '%咨询费%'
AND C NOT LIKE '%服务费%'
AND C NOT LIKE '%维修费%';
```sql
但是,实际应用中我的条件特别多,不仅仅这几项费用,大概有50多个,如果还是这样写的话感觉好麻烦,有没有可以简化的写法,就是比如只写一次not like,类似于in那样。
【以下回答由 GPT 生成】
可以使用正则表达式来简化 WHERE条件中字段的写法。以下是具体的解决方案:
sql SELECT A, B, C FROM your_table WHERE NOT REGEXP_LIKE(C, '管理费|咨询费|服务费|维修费', 'i');
在上面的代码中,'i'选项是用于忽略大小写的。如果您不需要忽略大小写,可以省略该选项。
这样,您只需要在正则表达式中列出要排除的费用类型即可,而无需使用多次的 NOT LIKE 操作。如有50多个条件,可将所有的费用类型用竖线分隔,添加至正则表达式中即可。
如果您对具体编写的正则表达式不熟悉,也可以使用其他方式动态生成正则表达式,例如使用程序编写脚本来生成该正则表达式字符串。
搜一下REGEXP_LIKE