我想在MySQL中匹配这个'wildcard %'
我尝试使用转义\%
但它无效。
答案 0 :(得分:5)
默认转义字符为\
。因此,只需在%
前加\
作为:\%
:
manual清楚地说:
测试a的文字实例 外卡字符,在它之前 逃避性格。如果你不 指定ESCAPE字符,“\”是 假设
在%
中搜索Stack%Overflow
:
mysql> select 'Stack%Overflow' like '%\%%';
+------------------------------+
| 'Stack%Overflow' like '%\%%' |
+------------------------------+
| 1 | <----- Found
+------------------------------+
1 row in set (0.00 sec)
在%
中搜索StackOverflow
:
mysql> select 'StackOverflow' like '%\%%';
+-----------------------------+
| 'StackOverflow' like '%\%%' |
+-----------------------------+
| 0 | <----- Not Found
+-----------------------------+
1 row in set (0.00 sec)
修改强>
如果从PHP调用此查询,则必须使用\\
。这是因为即使PHP使用\
作为转义字符。因此,让MySQL获得\
,你需要在PHP中拥有\\
。
答案 1 :(得分:0)
以下是一个例子:
$sql = 'SELECT * FROM tableName WHERE fieldName LIKE "wildcard\%"';
答案 2 :(得分:0)
好的我需要使用doble (\\)
来匹配数据库中的%
答案 3 :(得分:0)
你需要在PHP字符串中转义\,否则PHP会认为你实际上是在转义%,因此将文字%发送到sql查询,所以我认为这应该有效:
mysql_query("select * from bla where bli like '\\%somewords\\%'");
答案 4 :(得分:0)
在最新版本中,您也可以尝试
select * from tbl1 where TxtExpr REGEXP '^%';
问候