sql - 在 Oracle (Column_A,Column_B) IN (M,M) 中将 IN 与多个值一起使用
问题描述
我正在尝试根据两个值过滤掉记录。
我正在使用的表有学生帐户。我正在查看的两列应满足以下条件。
当 Column_A 包含帐户 (1310001,1320002,4520004,6170004) 时,Column_B 不能包含帐户 (1310001,1320002,4520004,6170004) 和以 (12,119,03,02) 开头的帐户。
当 Column_B 包含帐户 (1310001,1320002,4520004,6170004) 时,Column_A 不能包含帐户 (1310001,1320002,4520004,6170004) 和以 (12,119,03,02) 开头的帐户。
请让我知道如何用 SQL 编写它。
解决方案
我会将您的逻辑表达为:
SELECT *
FROM yourTable
WHERE
(
Column_A IN (1310001,1320002,4520004,6170004) AND
Column_B NOT IN (1310001,1320002,4520004,6170004) AND
NOT REGEXP_LIKE(Column_B, '^(12|119|03|02)')
) AND
(
Column_B IN (1310001,1320002,4520004,6170004) AND
Column_A NOT IN (1310001,1320002,4520004,6170004) AND
NOT REGEXP_LIKE(Column_A, '^(12|119|03|02)')
);
推荐阅读
- cordova - Ionic/Cordova iPhone XS Max 间隙/屏幕尺寸问题
- javascript - 使用 cronjob 和管道输出到 PNG 文件评估 PHP
- entity-framework - ORM 中的跟踪数据如何保持最新?
- mysql - Mysql在使用选择查询时为列类型文本添加索引不会提高性能
- python - asyncio 没有在预期的地方停止
- google-chrome - 检测浏览器是否使用暗模式并使用不同的网站图标
- nginx - Nginx 和 Certbot 不会转发到 443,只有 aspnet 核心和 kestrel 上的端口 5001
- android - 从 Activity 上下文之外调用 startActivity() 需要 FLAG_ACTIVITY_NEW_TASK 标志?nabinbhandari/Android 权限库
- .net - 将 Node.js 添加到 Dotnet Docker 容器
- javascript - React:如果没有记录,如何显示消息