oracle - Oracle 中的“不喜欢”
问题描述
我有一个案例陈述:
CASE WHEN (X_MED_CENTER IN ('X','S','W','X')
OR OUTSIDE_FAC IN ('X MEDICAL CENTER'))
AND LD_NOTE IS NULL AND LOWER(PROBLEM_CMT) NOT like '%home%'
THEN 1 else 0 end as CONTRACT
问题是 LOWER(PROBLEM_CMT) NOT like '%home%' 组件,因为当所有组件实际上都为真时,它似乎会使语句变为 false - 如果我不考虑该部分 - 语句工作正常。
如果我的逻辑有问题,欢迎提出任何建议以使其正常工作或解决。
谢谢。
解决方案
NULL
可能是你的问题 - 尝试使用LOWER(nvl(PROBLEM_CMT,'x')) NOT like '%home%'
看到这个演示
Create table test as
select 1 as id, 'Home' as PROBLEM_CMT from dual union all
select 2 as id, 'abroad' as PROBLEM_CMT from dual union all
select 3 as id, NULL as PROBLEM_CMT from dual;
select id from test
where LOWER(PROBLEM_CMT) NOT like '%home%';
ID
----------
2
select id from test
where LOWER(nvl(PROBLEM_CMT,'x')) NOT like '%home%';
ID
----------
2
3
推荐阅读
- r - “残差标准误差”是多元线性回归模型的“标准误差”吗?
- angular - 从本地机器获取数据到浏览器
- c - 光线追踪器不会根据方向给出不同的光强度
- rest - 用于执行相同操作的多个参与者的 REST API Url
- python - SageMaker 在不部署的情况下创建 PyTorchModel
- sql - 用于显示每个月的当前周和第一周的 SQL 脚本
- logging - 在另一个日志文件中分离 Apache POST 请求
- mongodb - 如何从 wasm 模块连接到本地 mongodb 实例?
- python - 列表中两个元素之和的可能组合
- python - 如何解决 paramiko 输出奇怪的格式