2016-09-28 2 views
1

У меня есть ряд, которые имеют столбец url со следующим значением:Странного поведения при ВЫБРАТЬ некоторые специальные символы в MySQL

http://example.com/[email protected]#$%^&*()_+[\"test\"] 

Когда я выполнить следующий запрос:

SELECT * FROM `mytable` WHERE `url` = 'http://example.com/[email protected]#$%^&*()_+[\"test\"]' 

MySQL говорит, что запись не существует.

+0

\ может быть экранирован. Используйте \\, чтобы избежать \ – Xenos

+0

. Вы имеете в виду, что \, используемое при экранировании "(т. Е. \"), Должно быть экранировано? – vitozev

+0

Да, я бы попробовал «h t t p: //example.com/a~~1234567890-=! @ # $%^& *() _ + [\\" test \\ "] '(очевидно, без пробелов в h t t p) – Xenos

ответ

3

Вам нужно бежать \ в ваших двумя \ «так как \» является последовательность выхода: только котировка „останется в выполненном запросе

\“ [это последовательность побега превратилась в] двойные кавычки («"») характер
\\ [представляет собой последовательность выхода превратилась в] обратный слэш („\“) характер

http://dev.mysql.com/doc/refman/5.7/en/string-literals.html

So

SELECT * FROM `mytable` WHERE `url` = 'http://example.com/[email protected]#$%^&*()_+[\\"test\\"]' 
Смежные вопросы