浅谈如何在MySQL中进行模糊搜索的一些问题

在搜索数据库中的数据时,SQL通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符:通配符描述 

 
        % 替代一个或多个字符
 
      _ 仅替代一个字符
 
      [charlist] 字符列中的任何单一字符
 
    [^charlist]或者 [!charlist]。
 
  mysql> select * from Personwhere City not like '%lon%';
+----+----------+-----------+----------------+----------+------+
| id | LastName | FirstName |Address 
            |City        | Year |
+----+----------+-----------+----------------+----------+------+
3 |Bush        | George      |Fifth Avenue    | NEW York | 1975|
7 | Carter    |Fred          | Changan Street | Beijing  | 1980 |
+----+----------+-----------+----------------+----------+------+
但是当你使用[charlist]来模糊搜索的时候,你会发现你很有可能查不到你想要的结果:


其实,当你想要用[charset]这种模式来搜索的时候应该把like关键字换成regexp关键字,因为MySQL提供的模式匹配的其他类型是使用扩展正则表达式。当你对这类模式进行匹配测试时,使用REGEXP和NOTREGEXP操作符(或RLIKE和NOT RLIKE,它们是同义词)。
mysql> select * from Person where City REGEXP '[L]';
+----+----------+-----------+--------------+--------+------+
| id | LastName | FirstName |Address 
        | City    | Year |
+----+----------+-----------+--------------+--------+------+
1 |Adams      |John          |abc                  | London | 1970 |
2 |sam          |John          | OXfordStreet | London | 1970 |
4 |Fred        |John          | OXfordStreet | London | 1970 |
6 |Adams      |John          | OXfordStreet | London | 1970 |
+----+----------+-----------+--------------+--------+------+
4 rows in set (0.03 sec)
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值