mysql like 输入%

编程入门 行业动态 更新时间:2024-10-12 03:22:25

<a href=https://www.elefans.com/category/jswz/34/1771279.html style=mysql like 输入%"/>

mysql like 输入%

当项目使用mysql并对字段进行模糊搜索时,如果系统对字段的字符没有做到限制,就会经常出现用户输入下划线‘_’、百分号‘%’此类通配符进行搜索,如此执行往往会检索到错误的结果集,下滑线‘_’会匹配单个任意字符,百分号‘%’会匹配任意个任意字符。

为了方便理解。for example:        在使用like进行模糊匹配时,常规写法为:field like CONCAT(‘%‘,变量,‘%‘)

那么结果为:   field like ‘%关键字%’,此时搜索出的结果是正确的。

那么问题来了,当用户输入单个‘_’,此时执行的语句就是  field  like  ‘%_%’ , 此时匹配的结果就是整张表的全部数据。

或者这样:

field  like  ‘%%%’  ,结果可想而知

解决方案

一,使用INSTR替换like

INSTR不会识别通配符,只会判断第二个字符串参数在第一个字符串中是否存在。确保此论是有据可依的,上官网。

INSTR用法(官网截图)

这里只是说明了该函数会将第二个参数在第一个参数第一次出现的首字母索引位置。通过广大网友的文档翻阅中发现该函数用于where字句中即可达到模糊查询的效果。

使用:

select * form users where INSTR(users_name,‘用户输入’)  等同于 select * from users where users_name like   CONCAT(‘%‘,‘用户输入‘,‘%‘),简单来说,INSTR就相当于java中的 string.contains("")方法

二,使用转义字符‘\’

‘\%‘会被转义为‘%’,同理‘\_’会被转义为‘_’,在你的编程语言过滤用户输入的值,遇到通配符就在前面填上‘\’

三,使用ESCAPE转义

使用(这个用的不熟,暂且举个例子吧)

示例

这种写法的含义是字符‘/’后面的字符都被当成是普通字符,而不再是通配符,这样的做法回有问题,最后一个‘%’应该是被当做通配符处理才是正确的。

原文:.html

更多推荐

mysql like 输入%

本文发布于:2024-03-06 09:32:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1714986.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:mysql

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!