我有一行,其列url
具有以下值:
http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]
当我执行以下查询时:
SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\"test\"]'
MySQL说该记录不存在。
答案 0 :(得分:3)
你需要在你的两个中逃脱\“因为\”是一个转义序列:只有引号“将保留在执行的查询中。
\“[转义序列变为双引号(”“”)字符
\\ [是一个转义为反斜杠(“\”)字符的转义序列
http://dev.mysql.com/doc/refman/5.7/en/string-literals.html
所以
SELECT * FROM `mytable` WHERE `url` = 'http://example.com/a~~1234567890-=!@#$%^&*()_+[\\"test\\"]'