我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like'%cond%'”一次。这样,SQL语句会长得惊人,碰上复杂一点的,甚至SQL语句会因为超长而被数据库拒绝执行。其实,这个问题只要动动脑筋就很容易解决:首先,将要匹配相同条件的字段连起来(field1+field2+...)成一个长字符串;然后再 Like “%cond%”就可以了。不过这种方法有个问题,就是得权衡多表连接造成的效率降低。一般来说,单表内字段肯定应该连接后再统一like判断;表间字段,则需要先过滤后,再实行这个策略。采取这个策略,不仅可以缩短SQL,而且能够有效地提高SQL的执行效率。

例:

以下为引用的内容:

QUOTE:
create table orders (

id int not null auto_increment,

name varchar(100) not null,

email varchar(255) not null,

address text not null,

pay_type char(10) not null,

shipped_at datetime null,

primary key (id)

);

里面有数据
1 aaa aaa@gmail.com beijing cc 2006-10-11 16:17:26

现在想要查找出email为aaa开头的,address为bei开头的记录

那么一般我们会构建如下SQL
select * from orders o where o.email like "aaa%" and o.address like "bei%"

其实我们可以使用如下SQL来缩短SQL语句(也就是连接字段一起进行like操作)
SELECT * FROM orders o where concat(o.email,o.address) like "like%df%"
 
多表的情况意思是说where子句先写连接子句进行过滤再写连接like语句进行检索
比如:
SELECT * FROM line_items l,orders o where l.order_id=o.id and concat(l.quantity,o.email) like "3%like%"

其中line_items表

以下为引用的内容:
create table line_items (
id int not null auto_increment,
product_id int not null,
order_id int not null,
quantity int not null default 0,
unit_price decimal(10,2) not null,
constraint fk_items_product
foreign key (product_id) references
products(id),
constraint fk_items_order foreign
key (order_id) references
orders(id),
primary key (id)
);

转载于:https://www.cnblogs.com/guangbo05/archive/2009/06/02/1494376.html

SQL“多字段模糊匹配关键字查询”相关推荐

  1. 通用算法-sql相似度模糊匹配

    1.需求描述:数据库采集sql语句的记录表,包含记录编号-ID.日期时间-data.sql语句-statement,对表内每一条记录的sql语句和表内其他记录的sql语句进行模糊匹配,以顺序字符匹配方 ...

  2. SQL多表联合查询时采用字段模糊匹配

    先说一下背景和要求: 背景:由于业务或是其他不描述的原因的问题导致原有存储的数据发生变动,与现有数据有差别,但还是能勉强看明白数据内容. 要求:实现A表的名称字段和B表的名称字段要模糊匹配. 上图: ...

  3. SQL多字段模糊查询

    http://user.qzone.qq.com/382164370#!app=2&via=QZ.HashRefresh&pos=1346996967 代码是在VC++里面: CStr ...

  4. SQL字符串开头模糊匹配

    1:以字段开头模糊查询的like的方法查询 select * from t  where  t.user_code like 'A%' 2:以字段开头模糊查询的left(字段,长度)的方法查询 sel ...

  5. Redis Redis Cluster 字段模糊匹配及删除

    Questions 在数据库内我们可以通过like关键字.%.*或者REGEX关键字进行模糊匹配.而在Redis内我们如何进行模糊匹配呢?集群情况Redis Cluster的情况是否和单机一致呢?前段 ...

  6. js 用正则表达式模仿SQL like % 的模糊匹配

    作者:Yan //过滤筛选 function dCell_ChangeCell(col, row, text) {if(row == 2){var colCount= dCell.GetCols(0) ...

  7. MySQL模糊匹配中文查询问题 dbutils

    今天遇到一个问题,MySQL中模糊匹配查询(like),使用的是dbutils 匹配查询英文.数字(学生id,学号,昵称)时没有问题,但匹配查询中文(学生姓名)时,查询不到结果 搞了好久,都没有解决, ...

  8. python两个excel字段模糊匹配_Python对两个Excel操作

    简介 现在有个需求,我们根据需要 data.xlsx 中某些单元格的内容来查找 find.xlsx 中的某些內容. 数据内容(为了数据安全,所有数据均已模糊处理) data.xlsx内容: find. ...

  9. python两个excel字段模糊匹配_Excel模糊查找中使用的算法 - python

    我正在匹配两个公司的公司名称.我试图用Levenstien的距离在Python中进行编码.我遇到公司简称以及诸如Pvt,Ltd之类的尾随问题.我已经使用Excel Fuzzy查找运行了相同的集合,并获 ...

  10. SQL 之 模糊匹配

    模糊匹配 关键字:LIKE , SOUNDEX , DIFFERENCE   1. 模式匹配 在WHERE子句中使用LIKE操作符来查找针对列值的某个部分的匹配.LIKE + 通配符 来指定. SEL ...

最新文章

  1. C#游戏开发快速入门教程Unity5.5教程
  2. PE学习(五)导出表,编写DLL及查看DLL的导出信息
  3. vue-cli-plugin-element的使用
  4. 手把手教你java快速过滤关键词
  5. mysql 字段a减字段b_SQL 数据库 如何实现第一行字段A减字段B得到值C,然后再用C减去第二行字段B,以此类推,求高手解答...
  6. css转化成stylus,stylus
  7. abp(net core)+easyui+efcore实现仓储管理系统——解决方案介绍(二)
  8. windows 安装 dnw、fastboot 驱动的时候遇到问题(数字签名)
  9. iterm2上传文件到linux,在iTerm2中使用Zmodem实现快速传输文件
  10. DSP 6678的NETCP
  11. 校招入职微软的99天
  12. Java 微信图片上传素材管理
  13. Android 小知识记录-----息屏后亮屏并显示Activity在锁屏页面之上
  14. USB开设备开发学习之三:USB中的端点详细了解
  15. 计算机专业的创意文案,抖音创意文案大全
  16. vSphere 通过 vMotion 实现虚拟机热迁移
  17. 虚拟服务器安装ibm mq,IBM MQ 客户端查看服务端消息的工具 WMQTool
  18. 软件测试做了五年黑盒测试,我总结的这些经验
  19. 查看环境变量jdk版本、文件夹中的jdk版本
  20. CA6140机床后托架加工工艺及夹具设计(论文+CAD图纸+开题报告+任务书+工艺卡+外文翻译)

热门文章

  1. 分类战车SVM全系列
  2. 【HDU 5033】【经典单调栈问题】Building
  3. 483. Smallest Good Base 1
  4. ics计算机系统全称,ICS计算机系统实验--datalab实验
  5. oracle ebs 接收数量,[zz]Oracle EBS API: 库存数量查询API示例
  6. java controller的生命周期_一张图搞懂Spring bean的完整生命周期
  7. javac 与java_javac和参数用法java命令的-d -cp
  8. linux 输入法框架xim,基于XIM协议的输入法原理与实现
  9. mysql kill 很多_MySQL--批量KILL连接
  10. vue-cli3开干