插件窝 干货文章 如何在 LIKE 查询中包含特殊字符 `` 和 `"` ?

如何在 LIKE 查询中包含特殊字符 `` 和 `"` ?

使用 ESCAPE LIKE 字符 745    来源:    2025-03-31

在 LIKE 查询中包含特殊字符 %_ 的解决方案

在 SQL 的 LIKE 查询中,%_ 是通配符,分别表示任意多个字符和单个字符。如果需要在 LIKE 查询中搜索这些字符本身,需要使用转义机制。

解决方案

1. 使用 ESCAPE 子句

SELECT * FROM table_name 
WHERE column_name LIKE '%\%%' ESCAPE '\';
-- 查找包含百分号的内容

SELECT * FROM table_name 
WHERE column_name LIKE '%\_%' ESCAPE '\';
-- 查找包含下划线的内容

2. 使用方括号(某些数据库如 SQL Server)

SELECT * FROM table_name 
WHERE column_name LIKE '%[%]%';
-- SQL Server 中查找百分号

SELECT * FROM table_name 
WHERE column_name LIKE '%[_]%';
-- SQL Server 中查找下划线

3. 对于双引号 "

双引号在 LIKE 查询中通常不是特殊字符,可以直接使用:

SELECT * FROM table_name 
WHERE column_name LIKE '%"%';
-- 查找包含双引号的内容

不同数据库的实现差异

  • MySQL/PostgreSQL: 使用 ESCAPE 子句
  • SQL Server: 可以使用 ESCAPE 或方括号 []
  • Oracle: 使用 ESCAPE 子句
  • SQLite: 使用 ESCAPE 子句

示例

-- 查找包含 "20%" 的字符串
SELECT * FROM products 
WHERE description LIKE '%20\%%' ESCAPE '\';

-- 查找包含 "file_" 的字符串
SELECT * FROM documents 
WHERE filename LIKE '%file\_%' ESCAPE '\';

通过使用转义字符,您可以精确匹配包含这些特殊字符的文本内容。