2015-06-09 39 views
2

我在使用特定數據的REPLACE()函數時遇到問題。它不匹配它應該替換的字符串發生。REPLACE的MySQL字符串引用()

我想要替換的字符串如下。

S:54:「教義\共同\類別\ ArrayCollection_elements

它存儲在以下字段

`definitions` longtext COLLATE utf8_unicode_ci NOT NULL COMMENT '(DC2Type:object)', 

這裏是一個包含所有行匹配LIKE請求字符串(在字符串通知\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()符合我需要的文字和替換?注:請不要責怪我想要替換的東西。這不是我的錯:-)

+0

'ArrayCollection_elements' ='ArrayCollection的\ 0_elements'這是不明確的,也有一些'\' –

+0

當我發佈一個字符串作爲文本顯然不顯示\ 0,但它在那裏。我使用了與LIKE – Stepashka

+0

相同數量的斜槓。您可以共享表格數據的一部分,以便我可以重現這種情況嗎? –

回答

0

如果你的「WHERE條件」的作品,你可以試試!

UPDATE `entity_type` 
    SET `definitions` = REPLACE(REPLACE(
     `definitions`, 
     's:54:', 
     's:53:'),'ArrayCollection_elements','ArrayCollectionelements') 
where `definitions` LIKE '%s:54:"\0Doctrine\\\\Common\\\\Collections\\\\ArrayCollection\0_elements%'; 
相關問題