2014-01-22 40 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