Mysql中Like的技巧

原创 2012年03月29日 13:28:46

Mysql中的模糊查询,相信大家是再熟悉不过了,像我们要对数据进行模糊查 询,SQL语句:

SELECT * FROM `table` WHERE `field` LIKE ‘%patten%’

啰嗦的解释一下,该SQL语句表示的是从table表中查出字段field包含有patten字符串的所有记录。

但今天我遇到的问题是,patten不是我们定义的,而是存在表里,而且不止一条。需要将提交过来的数据和表里面所有的patten进行匹配,看数 据是否乎合其中一个patten,传统思维去想,必须把所有patten查出来,循环对比,甚至可能用到正则。
大概的测试了一下,提交10条数据与表中1W条patten进行对比,需要花大于1.3秒的时间。当然在宏观的世界看这1秒已经相当快了,但如果遇到了高 并发,那就是服务器当机的主要原因了。

好了,开始讲述高手(不是我)的思维,其实也相当简单,把LIKE反向使用,不明白?那看程序吧!

  1. global$conn;
  2. foreach($urlsAS $url){
  3. $sql ="SELECT * FROM `table` WHERE '{$url}' LIKE `field`";
  4. $rs =mysql_query($sql,$conn);
  5. if(mysql_num_rows($rs))
  6.    //...
  7. }

mysql带有子查询的like查询

SELECT * FROM by_app_categories WHERE c_name LIKE CONCAT('%', (SELECT `name` FROM b_catelist WHERE t...
  • chengmeng_123
  • chengmeng_123
  • 2017年11月27日 09:20
  • 225

mysql like语句

数据库模糊查询like语句: $sql = "select * from table where title like '%中国%'"; //包含“中国”两个字 $sql = "select *...
  • kongjunchao159
  • kongjunchao159
  • 2015年08月06日 16:50
  • 1351

mysql中使用instr替换like

使用内部函数instr,可代替传统的like方式查询,并且速度更快。            instr函数,第一个参数是字段,第二个参数是要查询的串,返回串的位置,第一个是1,如果没找到就是0. ...
  • cpf2016
  • cpf2016
  • 2016年01月11日 17:53
  • 1330

关于mysql中的like语句带参数问题

一个题目引入: 查询与“B1100”银行在同一城市(假设银行名称的第5和第6个字符为城市名称)的其他的银行的名称。 表结构: 数据: 这里首先有一个问题,如何获取第五个和第...
  • dadada_wanwentao
  • dadada_wanwentao
  • 2016年04月02日 23:57
  • 757

mysql or和in还有like的简单使用

一、in的使用 写在where条件之后 where state in (#{state},#{state2}) 二 or的使用 (1) 一个字段对应两个参数值的 and ...
  • Alice_qixin
  • Alice_qixin
  • 2017年04月20日 14:58
  • 903

mysql中的like关键字

原文出处:http://www.sunchis.com/html/db/mysql/2010/0904/204.html MySQL中的LIKE关键字与匹配模式联合使用,用于确定所有与给定匹配模...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2013年10月29日 21:32
  • 2578

MySQL的正则表达式?LIKE和REGEXP的区别?

MySQL的正则表达式?LIKE和REGEXP的区别? 1. Mysql的正则表达式仅仅使SQL语言的一个子集,可以匹配基本的字符、字符串。 例如:select * from wp_posts whe...
  • qw_xingzhe
  • qw_xingzhe
  • 2017年07月30日 08:29
  • 945

mysql 查询中文like时

在 MySQL 5.5 以上, 若欄位 Type 是 time,date,datetime 在 select 時若使用 like '%中文%' 會出現 Illegal mix of collati...
  • u011447828
  • u011447828
  • 2015年05月06日 16:13
  • 1407

mysql存储过程中like用法

CREATE PROCEDURE `proc_init_tagsData`() begin DECLARE v_keyword varchar(30); DECLARE v_tag_id...
  • winter13292
  • winter13292
  • 2012年02月29日 10:42
  • 5724

mysql连接查询(A表某字段 like B表字段)

假设有A、B两表 A表中有个字段column_aa B表中有个字段column_bb 如果需要查询出B表中字段column_bb like A表中column_aa字...
  • wen3qin
  • wen3qin
  • 2015年07月10日 06:12
  • 1543
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mysql中Like的技巧
举报原因:
原因补充:

(最多只允许输入30个字)