通配符
SQL 通配符是 LIKE 操作符的好搭档,用于模糊匹配。标准 SQL 通配符有两个:% 匹配零个或多个字符,_ 精确匹配一个字符。
LIKE '%飞翔%' 匹配任何包含"飞翔"的字符串,LIKE '张_' 匹配"张"后跟一个字符(如"张三"但不匹配"张")。通配符只能在 LIKE(或 NOT LIKE)中使用,不能和 = 搭配。
性能方面:LIKE '飞翔%'(前缀匹配)可以用索引,但 LIKE '%飞翔%'(中缀匹配)无法使用索引,大数据量下会很慢。需要高频做中缀搜索的场景,应使用全文索引(FULLTEXT)。
搜索功能几乎离不开通配符——HR 搜员工名、客服搜商品名、财务搜发票号,全是模糊匹配的用武之地。
标准写法:
SELECT 列名 FROM 表名
WHERE 列名 LIKE '模式';
以飞翔科技为例:
-- 找姓名以"航"开头的员工
SELECT emp_name FROM employees
WHERE emp_name LIKE '航%';
-- 找邮箱域名是 @feixiang.net 的员工
SELECT emp_name, email FROM employees
WHERE email LIKE '%@feixiang.net';
-- 找商品名包含"飞翔"的商品
SELECT product_name, price FROM products
WHERE product_name LIKE '%飞翔%';
-- 找工号第二位是 0 的 5 位工号员工
SELECT emp_name FROM employees
WHERE emp_id LIKE '_0___';
最后一条用了 _:_0___ 匹配"任意字符 + 0 + 三个任意字符",典型用于固定格式的编码搜索。