David Chao

David Chao

David Chao

profile-pic
  • Home
  • About Me
  • Resume
  • Portfolio
  • Blog

© 2004-2020 MAMU Group

#
MySQL

Update MySQL json array 的某個值

2020/03/20

自從 MySQL 5.7 Josn 後,我們有越來越多欄位改用 Json 來儲存,

用起來真是開心啊,資料庫也簡潔不少,但最近發現了一個狀況,

有一些資料在 insert 的時候 value 存錯了,該怎麼辦呢?

先看一下存錯的資料結構,是一個很簡單的 json array,我們用星座來舉例,

假設你的 table 裡有一欄 constellation 然後 type 是 json,

這是一個複選欄位,可能是說你跟什麼星座是好朋友之類的,

所以每筆資料勾選的星座數量、順序都可能不一樣,類似如下:

["Aries", "Taurus", "Cancer"]

問題就是某些天才的同事,把 Aries 打成 Arie,但 DB 裡已經有 N 筆錯誤了!

先想辦法找出錯誤的值:

接者就是更新他囉

簡單說明一下,由於 JSON_REPLACE 一定要有 key,因為我們的 key 不固定,
所以搭配 JSON_SEARCH 去找出錯誤值的位置, 如果你的資料結構本身就是有 key 的, 那就不用那麼複雜,直接指定 key 值就可以囉!

趙大衛
貫徹死了都要創業為信念,卻差一點讓口號變成事實! 目前正在進行第一次修養,請多多支持。


← [讀書心得] 量子習慣 結語 MySQL + Logstash 更新時區問題 →

1 Comment

  • 匿名訪客
    2021 年 03 月 31 日 at 19:28:18

    强!

  • 發佈留言 取消回覆