Совпадение знака "%" при поиске в базе данных MySQL
Я хотел бы соответствовать этому 'wildcard %'
в MySQL.
Я пытался использовать побег \%
и это не работает.
5 ответов
Экранирующий символ по умолчанию \
, Так что просто префикс %
с \
как: \%
:
В руководстве четко сказано:
Чтобы проверить наличие буквенных символов подстановочного знака, перед ним должен быть escape-символ. Если вы не укажете символ ESCAPE, подразумевается "\".
Ищи %
в Stack%Overflow
:
mysql> select 'Stack%Overflow' like '%\%%';
+------------------------------+
| 'Stack%Overflow' like '%\%%' |
+------------------------------+
| 1 | <----- Found
+------------------------------+
1 row in set (0.00 sec)
Ищи %
в Stackru
:
mysql> select 'Stackru' like '%\%%';
+-----------------------------+
| 'Stackru' like '%\%%' |
+-----------------------------+
| 0 | <----- Not Found
+-----------------------------+
1 row in set (0.00 sec)
РЕДАКТИРОВАТЬ:
Если вы вызываете этот запрос из PHP, вам придется использовать \\
, Это потому, что даже PHP использует \
как побег персонажа. Так что сделайте MySQL получить \
тебе нужно иметь \\
в PHP.
Вам также нужно экранировать строку PHP \ in, иначе PHP подумает, что вы на самом деле экранируете%, отправляя таким образом литерал% в запрос sql, поэтому я думаю, что это должно сработать:
mysql_query("select * from bla where bli like '\\%somewords\\%'");
Вот пример:
$sql = 'SELECT * FROM tableName WHERE fieldName LIKE "wildcard\%"';
В последней версии вы также можете попробовать
select * from tbl1 where TxtExpr REGEXP '^%';
С уважением
Хорошо, мне нужно использовать doble (\\)
чтобы соответствовать% в базе данных