David Chao

David Chao

#
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 值就可以囉!

發佈留言