字段值格式如下(001,2|002,2|005,3),要怎样快速的找到该字段中包含值为002,2的记录,该表中的数据量较大(百万起步),除like外有没其它方法 表中有一字段,值的格式如下(001,2|002,2|005,3|006,4),要怎样快速的找到该字段中包含值为002,2的记录,该表中的数据量较大(百万起步),除like外有没有比较快速的方法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果不用like,那么你可以用正则表达式啊,为什么不用like? 除了like,还可以用正则的regexp_like,但都不会是快速的方法,因为都执行全表扫描。可以的话,建议还是重新设计表结构和应用程序 --那用instr试试 1* select * from emp where instr(ename,'MI',1,1)>0SQL> / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO---------- ---------- --------- ---------- -------------- ---------- ---------- ---------- 7369 SMITH CLERK 7902 17-12月-80 800 900 20 7934 MILLER CLERK 7782 23-1月 -82 1300 10 select instr('001,2|002,2|005,3|006,4','002,2') from dual 跟用不用instr关系不大,关键是将会全表扫描.oracle擅长的是记录检索,不是字符串处理.索引尽量使用记录的形式来存储,不要用字串拼有逻辑意义的数据组. 请教各个日志文件(undo redu undo/redo)的使用频率 oracle中如何取两个字符串的时间差 sql問題 求Microsoft JET Database Engine 错误 '80004005'解决方案 这个语句应该如何建立索引呢 isqlplusctl start .操作系统找不到已输入的环境选项? start with connect by prior 怎么样用job定时把快照里的数据导入到表里 原创+突发奇想+分享+散分-----关于分组后字段拼接的问题 ORA-03106错误,求解 Sql*Plus 级联问题 求改oracle语句
可以的话,建议还是重新设计表结构和应用程序
1* select * from emp where instr(ename,'MI',1,1)>0
SQL> / EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO
---------- ---------- --------- ---------- -------------- ---------- ---------- ----------
7369 SMITH CLERK 7902 17-12月-80 800 900 20
7934 MILLER CLERK 7782 23-1月 -82 1300 10