2016-11-28 186 views
-1

我現在有一個MySQL表如下:如何更新嵌套元素的第三個元素(如JSON)?

|| ID || Name || handling        || enabled || 
|| 1 || bob || { 2 { 4, 7, 0.2 } 7 { 20.102, 3 } } || 1  || 
|| 2 || abc || { 6 { 4, 9, 0.6 } 7 { 20.102, 83 } } || 1  || 
|| 3 || xyz || { 2 { 4, 78, 0.2 } 7 { 20.102, 3 } } || 1  || 

我試圖找到一種方法,通過一個SQL查詢做下面的技巧:

第三個數字有(7號1, 9爲id 2,78爲id 3)必須更改爲'30'。我會手動完成這一切,但它是一個約表。 5000行。我「可以」在C++中做一個循環來完成這一切,但出於一些技術原因,我寧願有一個SQL查詢。

+0

這似乎不是一個有效的JSON –

+0

它可能不是。我剛剛做出來:P。但是,'arturro'的迴應似乎會爲我所需要的技巧做好準備。 – Anthony

+0

MySQL作爲一些其他數據庫對JSON有特別的支持。 –

回答

0

如果你知道更換部分永遠是第一和第二個逗號之間,那麼你可以做一些字符串的切片,像這樣:

更改文本1和2之間的逗號:

UPDATE TEST_TABLE6 
SET A = CONCAT(SUBSTRING_INDEX(A,',',1),',','30',SUBSTRING(A, LENGTH(SUBSTRING_INDEX(A,',',2))+1)); 

改變7到8之間的文本逗號:

UPDATE TEST_TABLE6 
SET A = CONCAT(SUBSTRING_INDEX(A,',',7),',','30',SUBSTRING(A, LENGTH(SUBSTRING_INDEX(A,',',8))+1)); 
+0

如果要替換的部分位於第7個逗號和第8個逗號之間,該怎麼辦? – Anthony

+0

我修好了。答案中的例子。 – arturro

+0

稍後當我回家時會考驗你。 :) 謝謝。 – Anthony