2014-01-22 39 views
0

我试图更新我的mySql数据库。的Value搜索并替换之间的字符串“”后标记

{ 
    "Subject": "Subject here", 
    "Content": "The content here", 
    "TextContent": "Here text content goes", 
    "To": "this is to user<[email protected]>", 
    "From": "Name of User<[email protected]>" 
} 

我们做什么,我一直寻找From标签,然后ReplaceName of User<[email protected]>other user<[email protected]>

From标签后面的值对我而言未知。所以我想要替换""之间的整个报价。

为我做目前

UPDATE `Table_Name` 
SET Value= REPLACE(Value,'Name of User<[email protected]>','other user<[email protected]>') 
WHERE Name = 'Name_of_field' && INSTR(Value,'From')>0; 

什么,我知道这是错误的方式来做到这一点。请给我建议一种方式,因为在这里我使用的是我未知的Name of User<[email protected]>

+0

我将探索使用正则表达式搜索和替换。看看http://stackoverflow.com/questions/986826/how-to-do-a-regular-expression-replace-in-mysql,然后如果你需要正则表达式的帮助,我会发布一个新的问题(用'正则表达式'标记) –

+0

@MartinWilson我正在经历这个。我是'mySql'的新手,所以让我花点时间理解这一点。 –

+0

字段顺序(来自,等等)总是保持不变? – peterm

回答

2

这应该这样做

UPDATE table1 
    SET value = REPLACE(value, 
         SUBSTRING_INDEX(SUBSTRING_INDEX(value, '"From": "', -1), '"', 1), 
         'other user<[email protected]>') 
WHERE ... 

这里是SQLFiddle演示

+0

谢谢你的回答。你能解释一下吗? –

+0

这与演示工作正常,但它不适用于我的数据。它将数据插入'Value'的开头# –

+0

不客气。简而言之,'SUBSTRING_INDEX'(首先从'“From:”'得到一切,然后第二个从下一个双引号到左边的所有内容)提取'from'字段的值,然后用它替换。 – peterm