sql中like怎么用

sql中like怎么用
最新回答
懵蓝初梦

2026-01-14 03:59:20

SQL中的LIKE运算符用于模式匹配和模糊搜索,通过指定通配符模式来筛选符合条件的行。

  • 基本语法

    SELECT 列名 FROM 表名 WHERE 列名 LIKE 模式
  • 通配符说明

    %:匹配任意长度的字符(包括空字符)。

    示例:LIKE 'j%' 匹配以 j 开头的字符串(如 John、James)。

    _:匹配单个任意字符。

    示例:LIKE 'J_n' 匹配 Jon、Jan,但不匹配 John。

    []:匹配方括号内的任意单个字符(部分数据库支持,如SQL Server)。

    示例:LIKE '[a-c]%' 匹配以 a、b 或 c 开头的字符串。

    [^]:匹配不包含方括号内字符的单个字符(部分数据库支持)。

    示例:LIKE '[^0-9]%' 匹配不以数字开头的字符串。

  • 常见用法

    前缀搜索

    SELECT * FROM customers WHERE name LIKE 'Jo%';

    匹配以 Jo 开头的姓名(如 John、Joseph)。

    后缀搜索

    SELECT * FROM products WHERE description LIKE '%computer%';

    匹配描述中包含 computer 的产品(如 Laptop computer、Computer accessories)。

    包含搜索

    SELECT * FROM orders WHERE order_id LIKE '%2023%';

    匹配订单ID中包含 2023 的记录。

    精确匹配

    SELECT * FROM users WHERE username LIKE 'admin';

    等价于 =,仅匹配完全相同的值(不区分大小写,如 Admin 也可能被匹配)。

  • 注意事项

    大小写敏感性:多数数据库(如MySQL)默认不区分大小写,但PostgreSQL等可能区分。可通过 LIKE BINARY(MySQL)或 ILIKE(PostgreSQL)调整。

    性能影响:模式以 % 开头(如 LIKE '%text')会导致全表扫描,降低查询效率。建议优先使用前缀匹配(如 LIKE 'text%')。

    转义字符:若需匹配通配符本身(如查找 % 字符),使用 ESCAPE 子句。例如:SELECT * FROM files WHERE name LIKE '%%%' ESCAPE '';匹配包含 % 的文件名。

  • 示例扩展

    -- 匹配第二个字符为 'a' 的姓名SELECT * FROM employees WHERE name LIKE '_a%';-- 匹配订单ID为字母开头后接数字(SQL Server)SELECT * FROM orders WHERE order_id LIKE '[A-Za-z][0-9]%';

通过灵活组合通配符,LIKE运算符可实现高效的模糊查询,但需注意数据库兼容性和性能优化。