mysql json update_Update MySQL json array 的某個值

这篇博客介绍了如何在MySQL中更新JSON类型的array字段,特别是当数据存在错误时,如将星座名"Aries"误写为"Arie"。通过使用`JSON_CONTAINS`、`JSON_REPLACE`和`JSON_SEARCH`函数,可以定位并修正这些错误的值。
摘要由CSDN通过智能技术生成

3553141a47285e44d360d6ba33d51dc8.gif

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

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

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

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

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

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

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

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

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

先想辦法找出錯誤的值:

select constellation from member where JSON_CONTAINS(constellation , '["arie"]');

接者就是更新他囉

UPDATE member SET constellation = JSON_REPLACE(constellation, JSON_UNQUOTE(JSON_SEARCH(constellation, 'one', 'arie')), 'aries') where JSON_CONTAINS(constellation, '["arie"]');

簡單說明一下,由於 JSON_REPLACE 一定要有 key,因為我們的 key 不固定,

所以搭配 JSON_SEARCH 去找出錯誤值的位置, 如果你的資料結構本身就是有 key 的, 那就不用那麼複雜,直接指定 key 值就可以囉!

f8296729cb119367c80ece35666fe667.png

趙大衛

貫徹死了都要創業為信念,卻差一點讓口號變成事實!

目前正在進行第一次修養,請多多支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值