У меня проблема с использованием функции REPLACE() для определенных данных. Он не соответствует появлению строки, который он должен заменить.Строковая цитата MySQL для REPLACE()
Строка, которую я хочу заменить, следующая.
S: 54: "Учение \ Common \ Коллекции \ ArrayCollection_elements
Он хранится в следующем поле
`definitions` longtext COLLATE utf8_unicode_ci NOT NULL COMMENT '(DC2Type:object)',
Вот т.п. запрос, который соответствует всем строкам, содержащим строка (уведомление \0
на колонке):
SELECT `definitions`
FROM `entity_type`
WHERE `definitions` LIKE '%s:54:"\0Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\0_elements%'
В то же время, когда я запускаю следующий запрос, я получаю «0 затронутых строк» сообщение и ничего замещается:
UPDATE `entity_type`
SET `definitions` = REPLACE(
`definitions`,
's:54:"\0Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\0_elements',
's:53:"\0Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\0elements'
);
Как я должен изменить строку, чтобы REPLACE() соответствует тексту мне нужно, и заменить его ?
PS: Пожалуйста, не обвиняйте меня в том, что я пытаюсь заменить. это не моя вина :-)
'ArrayCollection_elements' =' ArrayCollection \ 0_elements' это не ясно, также есть некоторые двусмысленность с '\' –
Когда я отправляю строку в виде текста, \ 0 явно не отображается, но он есть. Я использовал такое же количество косых черт, как в LIKE – Stepashka
Можете ли вы поделиться частью табличных данных, чтобы я мог воссоздать ситуацию? –