MySQL数据库基础(必知必会8-12)-通配符,正则表达式,计算,汇总

使用通配符过滤

使用LIKE关键字实现模糊查询
百分号(%)通配符 表示任何字符出现任意次数,但是不能匹配null

-- 8.1LIKE操作符
-- 利用通配符匹配
-- 8.1.1百分号(%)通配符 
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 'jet%';    -- 找出所有以词jet开头的商品的id和名称
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '%anvil%';   -- 找出所有商品名包含anvil字段的商品的id和名称
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE 's%e';   -- 找出所有商品名以s开始以e结尾的商品的id和名称

划线(_)通配符表示任何字符出现1次,该通配符只匹配单个字符

-- 8.1.2下划线(_)通配符
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '_ ton anvil';   -- 匹配1个
SELECT prod_id,prod_name FROM products WHERE prod_name LIKE '% ton anvil';   -- 匹配多个
使用通配符的技巧
  • 不过度使用,如果其他操作符能达到相同的目的,应该使用其他操作符
  • 如果绝对有必要,否则不要将通配符放在最开始的地方,会导致索引失效
  • 注意通配符的位置

用正则表达式进行搜索

正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较
通过REGEXP后跟的作为正则表达式进行处理

-- 9.2使用MySQL正则表达式
-- 9.2.1基本字符匹配
SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;  -- 检索列pro_name包含文本1000的所有行;
SELECT prod_name FROM products WHERE prod_name REGEXP '.000' ORDER BY prod_name;  -- 检索列pro_name包含文本.000的所有行,.表示任意一个字符;
LIKE与REGEXP区别
  • LIKE是匹配整个列的,如果被匹配的文本在列值中出现是列值中的一部分,LIKE不会找到它,除非使用通配符
  • REGEXP是在列值内进行匹配,如果被匹配的文本在列值中出现,REGEXP将会找到并返回相应行
  • REGEXP可以用来匹配整个列值,使用^和&定位符实现
  • 例:
SELECT prod_name FROM products WHERE prod_name LIKE '1000' ORDER BY prod_name; -- 没有返回值,
SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name; -- 有返回值
-- 9.2.2进行OR匹配
SELECT prod_name FROM products WHERE prod_name REGEXP '1000|2000' ORDER BY prod_name;  -- 检索列pro_name包含文本1000或2000的所有行;
-- |表示匹配其中之一
-- 9.2.3匹配几个字符之一
SELECT prod_name FROM products WHERE prod_name REGEXP '[123] ton' ORDER BY prod_name;  -- [123]定义一组字符,表示匹配1或2或3,是[1|2|3]的简写
SELECT prod_name FROM products WHERE prod_name REGEXP '[1|2|3] ton' ORDER BY
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值