模糊查询忽略大小写解决方案

mysql 同时被 2 个专栏收录
10 篇文章 0 订阅
10 篇文章 0 订阅

问题描述:

通常在数据库存入的英文数据会有大小写混合的情况,在模糊查询时数据库对关键字的大小写不明感,我们需要对数据进行处理才能正确的搜索出数据。
例如:数据库中英文名称存入的Tom
搜索关键字:Tom,T,To,能够正确的检索出来
搜索关键字:TOM,TO是搜索不出来的。

解决方案:统一将关键字转为大写或者小写,对应的数据库字段也要转为大写或者小写
在这里插入图片描述

SELECT * 
FROM USER 
WHERE UPPER( EN_NAME ) 
LIKE CONCAT( CONCAT( '%',UPPER(#{search})),'%')

在这里插入图片描述

SELECT * 
FROM USER 
WHERE 
LOWER( EN_NAME ) 
LIKE CONCAT( CONCAT( '%',LOWER(#{search})),'%')

java业务中将关键字转为大写、小写

search=search.toUpperCase()
search=search.toLowerCase()

业务中的sql

    <select id="findPageCount" parameterType="com.ats.dt.entity.vo.MapperPage" resultType="int">
        SELECT count(1) FROM BUSINESS_TERMS WHERE IS_DELETE = 0
        <if test="search!=null">
            <!--and	( CN_NAME like '%'+#{search}+'%' or EN_NAME like '%'+#{search}+'%' or EN_SHORT_NAME like '%'+#{search}+'%' )-->
            and (CN_NAME like CONCAT(CONCAT('%',#{search}),'%') OR UPPER(EN_NAME) like CONCAT(CONCAT('%',#{search}),'%') OR
            UPPER(EN_SHORT_NAME)  like CONCAT(CONCAT('%',#{search}),'%') OR PY_CODE like CONCAT(CONCAT('%',#{search}),'%')
            OR WB_CODE like CONCAT(CONCAT('%',#{search}),'%') OR BUSINESS_TERMS_SOID like CONCAT(CONCAT('%',#{search}),'%'))
        </if>
    </select>


    <select id="findPage" parameterType="com.ats.dt.entity.vo.MapperPage" resultMap="BaseResultMapVo">
        select * FROM
        (SELECT A.*, ROWNUM RN FROM (SELECT BT.*,case BT.status when 150 then '未启用' when 149 then '启用' end as STATUS_NAME
        FROM BUSINESS_TERMS BT WHERE 1=1 and  IS_DELETE = 0
        <if test="search!=null">
            <!--and	( CN_NAME like '%'+#{search}+'%' or EN_NAME like '%'+#{search}+'%' or EN_SHORT_NAME like '%'+#{search}+'%' )-->
            and (CN_NAME like CONCAT(CONCAT('%',#{search}),'%') OR UPPER(EN_NAME) like CONCAT(CONCAT('%',#{search}),'%') OR
            UPPER(EN_SHORT_NAME)  like CONCAT(CONCAT('%',#{search}),'%') OR PY_CODE like CONCAT(CONCAT('%',#{search}),'%')
            OR WB_CODE like CONCAT(CONCAT('%',#{search}),'%') OR BUSINESS_TERMS_SOID like CONCAT(CONCAT('%',#{search}),'%'))
        </if>
        ORDER BY CREATE_DATE DESC) A
        )
        WHERE RN BETWEEN #{pageSt} AND #{pageEd}
    </select>
  • 2
    点赞
  • 5
    评论
  • 1
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:1024 设计师:我叫白小胖 返回首页

打赏作者

伏加特遇上西柚

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值