'not like' 在甲骨文中
'not like' in 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) 不像 '%home%' 组件,因为当所有组件实际上都为真时,它似乎将语句呈现为假 - 如果我将该部分排除在外 - 语句有效很好。
欢迎提出任何建议以使其正常工作或解决我的逻辑错误。
谢谢。
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
我有一个案例陈述:
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) 不像 '%home%' 组件,因为当所有组件实际上都为真时,它似乎将语句呈现为假 - 如果我将该部分排除在外 - 语句有效很好。
欢迎提出任何建议以使其正常工作或解决我的逻辑错误。
谢谢。
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