如 :select * from table where name in ('001,002,003,004') , name的值会有一到两个,一个的当然没问题. 但是name='001,003'就不好了,请叫各位高手该如何查询
解决方案 »
- 急求!触发器求解!!! 太挑战了啊 T-T
- oracle中时间问题
- 关于SQL语句中的&&问题
- oracle某个表里的某一行无法执行update语句
- 为什么oracle会自动执行 alter session set time-zone =
- SQL*Plus 连服务器时出现ORA-12154:TNS:不能分解服务名称错误,别的机子却可以连上服务器,
- 急!这个为什么报错,在线等待。
- 建表过程中创建触发器问题
- 求救,ORACLE被病毒侵袭后的恢复
- 求助 | jdbc连接oracle报错Connection refused
- orcale的case when的问题
- 访问oracle数据库是不是只能用ODBC
insert into t_x values('001');
insert into t_x values('002');
insert into t_x values('003');
insert into t_x values('004');
insert into t_x values('005');
commit;select t.*
from t_x t,
(select regexp_substr('001,002,003,004', '[^,]+', 1, level) str
from dual
connect by level <= regexp_count('001,002,003,004', ',') + 1) t1
where t.name = t1.str
楼主是要查询name在001,002,003,004在这3个范围?name字段是字符类型的吧?为何不对001,002,003单独加单引?
然后用户选择查询条件进行查询这个name字段匹配的项,查询条件也是用逗号分隔开的 。
select * from table where name in ('001’,'002','003','004')
数据库中的NAME字段的值有可能是001,003这种情况下,LZ用IN显然差不多了,如果就像LZ所说的就4种情况的话,用LIKe就好了。select * from table where name lik '%001%' or name like '%002%' or name like '%003%' or name like '%004%当然我估计情况不是这么简单,呵呵,如果值很多的话,效率问题留给大家