您好我在这样的数据库中有一个表:
╔══════════════════════════════════════════╗
║ v3_url_alias ║
╠════╦═══════════════╦═════════════════════╣
║ id ║ query ║ keyword ║
╠════╬═══════════════╬═════════════════════╣
║ 1 ║ product_id=20 ║ 540-65R38-K_028 ║
║ 2 ║ product_id=21 ║ 18.00R33-EM_DT-150% ║
╚════╩═══════════════╩═════════════════════╝
我使用此表格使我的网址友好,但是很多人都知道一个有效网址字符的%符号因此使我的浏览器收到了错误的请求。 我在这个表(1700左右)中有很多条目,需要一个查询来获取列关键字中包含%的所有条目。
所以我尝试在MySQL中做到这一点并提出了这个问题:
SELECT * FROM v3_url_alias WHERE keyword LIKE '%%%';
这会返回我的所有关键字,因为%用作通配符。
我的问题是如何使用SQL检索包含%字符的每个关键字?
答案 0 :(得分:5)
使用转义字符!
MySQL 将反斜杠(\
)作为默认转义字符:
SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';
ANSI SQL 方式是使用ESCAPE
子句指定转义字符,例如:
SELECT * FROM v3_url_alias WHERE keyword LIKE '%#%%' escape '#';
(这也适用于MySQL,至少只要\
没有指定。)
答案 1 :(得分:4)
使用方括号。
SELECT *
FROM v3_url_alias
WHERE keyword LIKE '%[%]%'
答案 2 :(得分:0)
使用MySQL:
使用反斜杠转义字符(\)。
SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';