选择%s作为值字符的查询sql

时间:2015-10-27 11:06:42

标签: php mysql sql url

您好我在这样的数据库中有一个表:

╔══════════════════════════════════════════╗
║              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检索包含%字符的每个关键字?

3 个答案:

答案 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 '%\%%';