Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 选择以%作为值字符的查询sql_Php_Mysql_Sql_Url - Fatal编程技术网

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

Php 选择以%作为值字符的查询sql,php,mysql,sql,url,Php,Mysql,Sql,Url,您好,我在数据库中有一个表,如下所示: ╔══════════════════════════════════════════╗ ║ v3_url_alias ║ ╠════╦═══════════════╦═════════════════════╣ ║ id ║ query ║ keyword ║ ╠════╬═══════════════╬═════════════════════╣ ║ 1

您好,我在数据库中有一个表,如下所示:

╔══════════════════════════════════════════╗
║              v3_url_alias                ║
╠════╦═══════════════╦═════════════════════╣
║ id ║    query      ║       keyword       ║
╠════╬═══════════════╬═════════════════════╣
║  1 ║ product_id=20 ║   540-65R38-K_028   ║
║  2 ║ product_id=21 ║ 18.00R33-EM_DT-150% ║
╚════╩═══════════════╩═════════════════════╝
我使用此表使我的url友好,但许多人都知道%符号不是有效的url字符,因此使我的浏览器收到错误的请求。 我在这个表中有很多条目(1700左右),需要一个查询来获取列关键字中包含%的所有条目

所以我尝试在MySQL中这样做,并提出了以下查询:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%%%';
这将返回我的所有关键字,因为%用作通配符


我的问题是如何用SQL检索每个包含%字符的关键字?

使用转义字符

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

SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';
ANSI SQL的方法是使用
转义
子句指定转义字符,例如:

SELECT * FROM v3_url_alias WHERE keyword LIKE '%#%%' escape '#';
(这也适用于MySQL,至少只要未指定
\

使用方括号

SELECT * 
FROM v3_url_alias 
WHERE keyword LIKE '%[%]%'
使用MySQL:

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


这帮我完成了任务:)!只是好奇。既然
SELECT*FROM v3\u url\u别名WHERE关键字像“%\%%”,为什么需要
escape'\'
有效。我不知道我遗漏了这一部分,我认为这是对描述的补充,因为我没有注意到它在查询中,所以我想well@6339是吗?!?那一定很特别。我的答案是一般的ANSI SQL。@Baklap4使用
SELECT*fromV3\uURL\u别名,其中的关键字“%\%%”escape'\'?。我的意思是使用
escape'\'
关键字。
SELECT * FROM v3_url_alias WHERE keyword LIKE '%\%%';