mysql与oracle like小知识
来源:互联网 发布:新闻英语听力训练软件 编辑:程序博客网 时间:2024/06/05 03:13
like "123%" -->走索引
like "%123" -->不走索引
like "%123%" -->不走索引
一般解决方案:
业务尽量避免,或采用搜索引擎
在ibatis或mybatis中,mysql与oracle的like语句不同:
oracle:
一般使用||来拼接字符串,也可用concat,但是concat在oracle中只可连接2个字符串
select * from xxx where
<isNotEmpty prepend="and"property="customerName">
CUSTOMER_NAME like '%'|| #customerName ||'%' </isNotEmpty>
mysql:
一般使用caoncat,concat在mysql中可连接多个字符串
select * from xxx where
<if test="buCode!=null andbuCode!=''">
AND bu_codelike CONCAT('%',#{buCode,jdbcType=VARCHAR},'%')
</if>
需注意的是:
1.oracle也可用CONCAT连接字符串的方式写like sql,但是concat在oracle中只支持拼接2个字符串,如需拼接多个,需自己内外嵌套拼接;
concat有 to_char的作用,就是把其他类型转成varchar类型的
2.||与concat的区别:显然易见,concat在oracle中可知拼接两个字符串,而||可拼接多个
重要:
无论musql还是oracle写like语句都会遇到一个问题:
SELECT * FROM REV_PRICE_BILL WHERE price_name like '%_%';
此sql会查询出所有,price_name的条件无效
解决方案:
SELECT * FROM REV_PRICE_BILL WHERE price_name like '%' || '\_' || '%' ESCAPE '\';
使用ESCAPE定义转义字符,转义字符后的通配符作为普通字符串
ESCAPE使用详细参考:http://blog.csdn.net/david_520042/article/details/6909230
- mysql与oracle like小知识
- Oracle与MySql知识汇总
- Oracle中instr与like
- 关于oracle和mysql 主键自增的小知识
- Oracle小知识收集
- Oracle小知识
- oracle知识小汇总
- Oracle 小知识 总结
- oracle面试小知识
- Oracle 小知识
- Oracle 小知识 总结
- oracle 小知识 + ibatis
- Oracle基础小知识
- Oracle小知识_1
- oracle 小知识
- Oracle小知识总结
- Oracle小知识总结
- oracle小知识
- 扫描一个多列的文件,将每一列扫描到一个结构体变量中
- HYActivityView
- 【Java基础】list转为Integer[]、list转为int[]、Integer[]转为int[]、int[]转为Integer[]
- mybatis中数值型0被判为空字符串
- python Day 4
- mysql与oracle like小知识
- 经典语句二
- 值传递的Java
- Sql中查询的具体应用及子句的优先级
- 进程运行状态
- es6小记
- 去掉input边框的原有属性和去掉a标签样式的方法
- linux下线程如何编写
- 五分钟学GIS | 多版本缓存