sql语句里“like”有没有反向用法?
可以不用like,而用 instr函数,而且instr函数的效率也优于like.
instr (str,substr) 返回子串substr在字符串str中的第一个出现的位置。如果substr不是在str里面,返回0。
所以 你就可以这样用了 判断:如果 instr(str2,str1)>0则说明 str1是str2 的一部分,如果instr(str2,str1)=0,那么str1就不是str2 的一部分.
希望对你有帮助.
没有的。
SQL即结构化查询语言(Structured Query Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。
SQL反向模糊查询,需要用到的函数为instr(str1,str2),instr(str1,str2)表示st,比如: SELECT * FROM TABLE_NAME T WHERE INSTR('唐飞',T.NAME)>0;
注:NAME为TABLE_NAME 中的一个字段,为VARCHAR类型。instr(str1,str2)>0表示str1包含str2; instr(str1,str2)>=表示str1不包含str2。
由1、2很容易可以看出来instr完全可以替代like,至少在以上示例中可以替代。只要把str1和str2换个位置就可以达到like效果。
instr的效率是比like要高些(orace对内建函数做了优化),而且使用like时,一些索引是不能用的,但oracle支持函数索引,如果使用函数索引的话,执行更快。
一般的数据库中,instr和like的效率是没有多大差别的,但对于oracle数据库可以通过函数索引来提高instr的执行效率。