MySQL WHERE 筛选数据

本文介绍了MySQL中WHERE子句的基本用法,通过具体例子展示了如何利用LIKE通配符和REGEXP正则表达式进行数据筛选,帮助读者掌握在SQL查询中筛选数据的技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

语法

SELECT
	field1,
	field2
FROM
	table_name
WHERE
	field1 = value1 [AND|OR] field2 = value2

运算符支持 =、!=、>、<、>=、<=、<=> 、IN、LINK、REGEXP
逻辑操作支持 AND、OR 且 AND 优先级大于 OR

例子

//结构
CREATE TABLE `user`  (
  `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `name` varchar(10) NOT NULL,
  `age` tinyint(4) NOT NULL,
  `sex` tinyint(4) NOT NULL,
  `tel` char(11) NOT NULL,
  PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARACTER SET utf8;

//单条件查询
SELECT * FROM `user` WHERE `id` = 1;

//AND查询
SELECT * FROM `user` WHERE `name` = '张三' AND `sex` = 1;

//OR查询
SELECT * FROM `user` WHERE `name` = '张三' OR `name` = '李四';

//查询子句
SELECT * FROM `user` WHERE (`name` = '张三' OR `name` = '李四') AND `sex`= 1;

//IN查询
SELECT * FROM `user` WHERE `name` IN ('张三','李四','王五');

//LIKE 模糊查询 '%'代表任意字符 '_'代表占位符
SELECT * FROM `user` WHERE `name` LIKE '张%'; 

//REGEXP 正则查询 
SELECT * FROM `user` WHERE `name` REGEXP '^[张王]{1}.*';

//BETWEEN 范围查询 查询两个值之间的数据且包含这两个值
SELECT * FROM `user` WHERE `tel` BETWEEN '13800138001' AND '13800138003';

LIKE 通配符

通配符描述
%替代一个或多个字符
_仅替代一个字符
[charlist]字符列中的任何单一字符
[^charlist]、[!charlist]不在字符列中的任何单一字符

REGEXP 正则表达式

关键字描述
^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 ‘\n’ 或 ‘\r’ 之后的位置
$匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 ‘\n’ 或 ‘\r’ 之前的位置
.匹配除 “\n” 之外的任何单个字符。要匹配包括 ‘\n’ 在内的任何字符,请使用象 ‘[.\n]’ 的模式
[…]字符集合。匹配所包含的任意一个字符。例如, ‘[abc]’ 可以匹配 “plain” 中的 ‘a’
[^…]负值字符集合。匹配未包含的任意字符。例如, ‘[^abc]’ 可以匹配 “plain” 中的’p’
p1|p2|p3匹配 p1 或 p2 或 p3。例如,‘z|food’ 能匹配 “z” 或 “food”。’(z|f)ood’ 则匹配 “zood” 或 “food”
*匹配前面的子表达式零次或多次。例如,zo* 能匹配 “z” 以及 “zoo”。* 等价于{0,}。
+匹配前面的子表达式一次或多次。例如,‘zo+’ 能匹配 “zo” 以及 “zoo”,但不能匹配 “z”。+ 等价于 {1,}
{n} n是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o
{n,m}m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值