У меня возникает этот вопрос, когда я использую mysql search что-то.вот подробная информация.
скажем, я получил таблицу с именем test
со столбцом с именем content
.в конкретной записи столбец content
содержит:
["
/^\w{2,}/","
/^[a-z][a-z0-9]+$/","
/^[a-z0-9]+$/","
/^[a-z]\d+$/"]
в конце строк есть символ перевода строки (исключая последняя строка), поэтому при использовании аналогичного синтаксиса для поиска в этой записи янаписал SQL как этот
select * from test where `content` like
'[\"\n/^\\\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\\\d+$/\"]'
, и он вернул правильный результат.но когда я изменил like
на =
, и этот оператор SQL не работал, после нескольких попыток я получил этот оператор SQL, который работал:
select * from test where `content` =
'[\"\n/^\\w{2,}/\",\"\n/^[a-z][a-z0-9]+$/\",\"\n/^[a-z0-9]+$/\",\"\n/^[a-z]\\d+$/\"]'
, он работал.Итак, вот вопрос: почему на земле like
и =
имеют разные стратегии побега?в операторе like
я должен использовать \\\\w
, \\\\d
, тогда как в операторе =
\\w
, \\d
все в порядке?