自從 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 值就可以囉!
匿名訪客
2021 年 03 月 31 日 at 19:28:18强!