我是靠谱客的博主 积极啤酒,最近开发中收集的这篇文章主要介绍sql语句中下划线_,百分号%处理,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 模糊查询的集中常见方式

  1. 参数中直接加入%%

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>
  1. 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>
    
  2. 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语句中下划线_,百分号%处理所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部