概述
sql语句中下划线_,百分号%处理
1、使用ESCAPE定义转义符
如下面的表达式:
LIKE '%M%' ESCAPE ‘M'
使用ESCAPE关键字定义了转义字符“M”,告诉DBMS将搜索字符串“%M%”中的第二个百分符(%)作为实际值,而不是通配符。当然,第一个百分符(%)仍然被看作是通配符,因此满足该查询条件的字符串为所有以%结尾的字符串。
2、使用INSTR替换like
INSTR不会识别通配符,只会判断第二个字符串参数在第一个字符串中是否存在。确保此论是有据可依的,上官网。
使用:
select * form users where INSTR(users_name,‘用户输入’)
等同于 select * from users where users_name like
CONCAT('%','用户输入','%'),简单来说,INSTR就相当于java中的 string.contains("")方法
3、扩展
mybatis like 模糊查询的集中常见方式
- 参数中直接加入%%
param.setUsername("%CD%");
param.setPassword("%11%");
<select
id="selectPersons" resultType="person" parameterType="person">
select id,sex,age,username,password from person where true
<if test="username!=null"> AND username LIKE #{username}</if>
<if test="password!=null">AND password LIKE #{password}</if>
</select>
-
bind标签
<select id="selectPersons" resultType="person" parameterType="person"> <bind name="pattern" value="'%' + _parameter.username + '%'" /> select id,sex,age,username,password from person where username LIKE #{pattern} </select>
-
CONCAT
where username LIKE concat(concat('%',#{username}),'%')
mybatis 中不同数据库的sql拼接方式
<if test="companyName != null and companyName != ''">
AND a.company_name LIKE
<if test="dbName == 'oracle'">'%'||#{companyName}||'%' ESCAPE '/'</if>
<if test="dbName == 'mssql'">'%'+#{companyName}+'%'</if>
<if test="dbName == 'mysql'">concat('%',#{companyName},'%')</if>
</if>
最后
以上就是积极啤酒为你收集整理的sql语句中下划线_,百分号%处理的全部内容,希望文章能够帮你解决sql语句中下划线_,百分号%处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复