MySQL用LIKE特殊字符搜索

SQL的LIKE查询语句中,有一些特殊的字符,需要转换后才能搜索到结果:

 

':用于包裹搜索条件,需转为\';

%:用于代替任意数目的任意字符,需转换为\%;

_:用于代替一个任意字符,需转换为\_;

\:转义符号,需转换为\\\\。

以下是一些匹配的举例。

 

SELECT * FROM `table` WHERE `title` LIKE 'a\'b%';            -- 搜索a'b...

SELECT * FROM `table` WHERE `title` LIKE 'a\%b%';            -- 搜索a%b...

SELECT * FROM `table` WHERE `title` LIKE 'a\_b%';            -- 搜索a_b...

SELECT * FROM `table` WHERE `title` LIKE 'a\\\\%';           -- 搜索a\b...

在PHP代码中,可以用这样的方法批量替换:

 

function filterLike($keyword) {

    $search = array('\'', '%', '_', '\\');

    $replace = array('\\\'', '\\%', '\\_', '\\\\\\\\');

    return str_replace($search, $replace, $keyword);

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,使用LIKE语句进行字符串匹配时,有时会遇到无法匹配到结果的情况。这可能是因为字符串中包含了特殊字符,而MySQL的LIKE的转义规则与普通字符串的转义规则不同。根据资料,在使用LIKE语句进行匹配时,需要进行两次转义。第一次转义时,不转义通配符字符 "%" 和 "_";第二次转义时,需要转义所有的特殊字符。你可以参考MySQL的官方文档中关于字符转义的说明来获取更详细的转义规则。在匹配的字符串中,还需要将其用引号包裹起来,可以使用单引号或双引号。此外,在MySQL 5.6.19版本中,使用一个下划线符号 "_" 也可以代表一个汉字。所以,如果你想通过LIKE语句过滤特殊字符串,需要注意以上的转义和引号使用规则。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [MySQL like查询字符转义遇到的坑](https://blog.csdn.net/weixin_34792357/article/details/113305995)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *3* [(转)MySQL数据表中带LIKE的字符匹配查询](https://blog.csdn.net/weixin_33806343/article/details/113161653)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值