SQL入门:模糊查询技巧大全

标准 SQL 中的模糊查询用于按 “部分匹配” 的规则检索数据,核心通过LIKE运算符结合通配符实现,适用于不确定完整内容的查询场景(如搜索姓名、商品名称等)。

一、核心语法与通配符

模糊查询的基础语法为:

SELECT 字段列表 FROM 表名 WHERE 字段名 LIKE '匹配模式';

其中 “匹配模式” 需结合以下通配符使用:

  1. %(百分号):匹配任意数量的字符(包括 0 个字符)

    • 例:'张%' 匹配以 “张” 开头的字符串(如 “张三”“张伟”“张”)
    • 例:'%三%' 匹配包含 “三” 的字符串(如 “张三”“王三强”“三三”)
    • 例:'%@example.com' 匹配以 “@example.com” 结尾的邮箱
  2. _(下划线):匹配单个任意字符

    • 例:'张_' 匹配以 “张” 开头且总长度为 2 的字符串(如 “张三”“张四”,不匹配 “张伟明”)
    • 例:'_三_' 匹配长度为 3 且中间字符为 “三” 的字符串(如 “张三疯”“李三光”)

二、基本使用示例

假设有users表(含username字段),以下是常见查询场景:

  1. 查询用户名以 “李” 开头的用户
SELECT username FROM users WHERE username LIKE '李%';

   2.查询用户名包含 “小” 的用户

SELECT username FROM users WHERE username LIKE '%小%';

  3.查询用户名长度为 3 且最后一个字是 “军” 的用户

SELECT username FROM users WHERE username LIKE '__军';

三、否定模糊查询:NOT LIKE

使用NOT LIKE可筛选不匹配模式的记录:

-- 查询用户名不包含“敏”的用户
SELECT username FROM users WHERE username NOT LIKE '%敏%';

四、转义特殊字符

若需匹配包含%_的字符串(如 “折扣 10%”“型号 A_123”),需用ESCAPE指定转义字符(通常用\#):

  1. 匹配包含%的字符
-- 查询商品名称含“%”的商品(如“优惠5%”)
SELECT product_name FROM products 
WHERE product_name LIKE '%5#%%' ESCAPE '#';
-- 说明:#为转义字符,#%表示实际的%,前后%为通配符

   2.匹配包含_的字符串

-- 查询型号含“_”的商品(如“ABC_123”)
SELECT model FROM products 
WHERE model LIKE '%ABC#_%' ESCAPE '#';

五、注意事项

  1. 性能影响:模糊查询(尤其是%开头的模式,如'%三')会导致索引失效,对大表查询效率较低,需谨慎使用。
  2. 区分大小写:是否区分大小写取决于数据库和字符集设置(如 MySQL 默认不区分,PostgreSQL 默认区分),必要时可通过LOWER()UPPER()函数统一大小写:
-- 不区分大小写查询包含“apple”的商品
SELECT product_name FROM products 
WHERE LOWER(product_name) LIKE '%apple%';

    3.与REGEXP的区别LIKE是标准 SQL 语法,支持简单匹配;REGEXP(正则表达式)功能更强但非标准,不同数据库实现有差异。

模糊查询通过LIKE%/_的组合,能灵活应对部分匹配场景,是搜索、筛选功能的基础实现方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值