繁体   English   中英

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

[英]Selecting query sql with % as value character

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

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

使用转义字符!

MySQL将反斜杠( \\ )作为默认转义字符:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';

ANSI SQL方法是使用ESCAPE子句指定转义字符,例如:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%#%%' escape '#';

(这也适用于MySQL,至少只要没有指定\\ 。)

使用方括号。

SELECT * 
FROM v3_url_alias 
WHERE keyword LIKE '%[%]%'

使用MySQL:

使用反斜杠转义字符(\\)。

SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM