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

时间:2008-04-24 14:16:00 

我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field like'%cond%'”一次。这样,SQL语句会长得惊人,碰上复杂一点的,甚至SQL语句会因为超长而被数据库拒绝执行。

其实,这个问题只要动动脑筋就很容易解决:首先,将要匹配相同条件的字段连起来(field1+field2+...)成一个长字符串;然后再 Like “%cond%”就可以了。不过这种方法有个问题,就是得权衡多表连接造成的效率降低。一般来说,单表内字段肯定应该连接后再统一like判断;表间字段,则需要先过滤后,再实行这个策略。采取这个策略,不仅可以缩短SQL,而且能够有效地提高SQL的执行效率。

例:

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)
);
标签:匹配,查询,sql
0
投稿

猜你喜欢

  • Python3中详解fabfile的编写

    2022-08-09 14:33:08
  • 关于JS中变量的显式申明和隐式申明

    2008-09-12 13:04:00
  • 在Debian下配置Python+Django+Nginx+uWSGI+MySQL的教程

    2023-04-22 23:03:44
  • 用Dreamweaver制作活动菜单条

    2009-07-10 13:15:00
  • Python实现学生成绩管理系统

    2023-08-13 09:51:17
  • 纯JS实现本地图片预览的方法

    2024-05-03 15:04:32
  • Python中functools模块函数解析

    2021-03-11 10:15:40
  • 不到20行实现Python代码即可制作精美证件照

    2021-08-29 09:27:43
  • Pytorch使用MNIST数据集实现基础GAN和DCGAN详解

    2021-11-17 02:14:33
  • 利用Python将txt文件录入Excel表格的全过程

    2021-09-05 10:02:59
  • 图文详解Python中模块或py文件导入(超详细!)

    2023-01-13 01:41:13
  • django之常用命令详解

    2023-02-04 07:25:19
  • 详解Python中datetime库的使用

    2021-03-31 20:14:13
  • Python词法结构

    2022-01-10 00:33:21
  • 只需要这一行代码就能让python计算速度提高十倍

    2023-01-30 15:16:02
  • python使用matplotlib的savefig保存时图片保存不完整的问题

    2021-07-04 11:50:22
  • BERT vs GPT自然语言处理中的关键差异详解

    2022-04-01 08:15:36
  • Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例

    2024-01-21 07:55:04
  • 网页设计软件FrontPage快捷键一览

    2008-02-24 16:55:00
  • Python用 KNN 进行验证码识别的实现方法

    2021-03-29 06:58:08
  • asp之家 网络编程 m.aspxhome.com