mysql - 从 mysql 文本字段中的 json 中删除属性的最快方法
问题描述
我有一个 >100MM 行的表。他们有一个包含如下 json 字符串的结果文本列:
{"location":"us","name":"Jon Doe","html":"<html>...</html>"}
我想删除 html 或将其设置为 null:
{"location":"us","name":"Jon Doe","html":null}
直接的方法是在代码中加载行,然后对它们进行 json 解码,将 html 设置为 null 并再次保存它们。但是,这将永远花费所有行。
有没有更高效的方法来使用查询?
解决方案
您可以连接通过从左到右方向搜索模式和反向SUBSTRING_INDEX()
搜索模式的函数得出的结果:<html
'/html>'
UPDATE tab
SET json_col = CONCAT(
SUBSTRING_INDEX(json_col,'<html',1),
SUBSTRING_INDEX(json_col,'/html>',-1))
推荐阅读
- angular - 套接字发出太多次,无法关闭它Angular
- php - 哪个是在 PHP 类中要求文件的最佳方法
- c++ - C++ 地图集混合
- spss - 一次为许多/所有变量编码缺失值
- amazon-web-services - AWS S3 - 为存储桶分配有限权限并创建只能访问该存储桶的 IAM
- arrays - 在 JSON 响应中返回数组的最佳格式是什么?
- ios - 如何在 Swift 中的 tableview 上设置图像视图高度?
- javascript - 将模块数组(MDBootstrap js 模块)导入 Laravel Mix
- sqoop - Sqoop 与 oozie 将 lastvalue 打印到新行
- php - 在 Phalcon 控制器中找不到模型