请教一个关于模糊查询来过滤数据的sql语句

bierhoff 2012-12-19 03:59:58
需要对表A中的a字段来进行条件过滤,
原来的写法就是 not like '%x%',not like '%xx%',not like '%xxx%'这样,每次手工改程序,
觉得改程序麻烦,想建一个表保存过滤条件,用来进行模糊过滤,
达到类似not in (select *) 的目的,请高手指点。
...全文
273 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yinan9 2012-12-21
  • 打赏
  • 举报
回复
引用 6 楼 qq53090120 的回复:
写一个就行了 not like '%x%' 其他两个都包含在内
楼主只是打个比方而已
qq53090120 2012-12-21
  • 打赏
  • 举报
回复
写一个就行了 not like '%x%' 其他两个都包含在内
善若止水 2012-12-20
  • 打赏
  • 举报
回复
为什么要那么麻烦呢?like '%xx%' 和 like '%xxx%'是包含在 like '%x%'里面的。所以,只要用一个not like '%x%' 就可以了
呵呵112123 2012-12-20
  • 打赏
  • 举报
回复
引用 2 楼 sky_08_06_02 的回复:
引用 1 楼 yang_ying1983 的回复:把条件表循环 直接拼出后名的not like '%x%',not like '%xx%',not like '%xxx%'的字符串不就好了 正解,或者在程序里循环。一条SQL语句搞定,额也想知道,请高手指教!

declare
v_str_like varchar2(2000);
begin
for c in ( select 'x' as str from dual
 union all
 select 'xx' as str from dual
 union all
 select 'xxx' as str from dual)
loop
v_str_like:=v_str_like||'not like ''%'||c.str||'%'',';
end loop; 
dbms_output.put_line(RTrim(v_str_like, ','));
end;
小海葵1 2012-12-20
  • 打赏
  • 举报
回复
with test as ( select 'x' as str from dual union all select 'xx' as str from dual union all select 'xxx' as str from dual ) select * from test where regexp_like(str,'x+') ========================= 1 x 2 xx 3 xxx
sky_08_06_02 2012-12-20
  • 打赏
  • 举报
回复
引用 1 楼 yang_ying1983 的回复:
把条件表循环 直接拼出后名的not like '%x%',not like '%xx%',not like '%xxx%'的字符串不就好了
正解,或者在程序里循环。一条SQL语句搞定,额也想知道,请高手指教!
呵呵112123 2012-12-19
  • 打赏
  • 举报
回复
把条件表循环 直接拼出后名的not like '%x%',not like '%xx%',not like '%xxx%'的字符串不就好了

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧