我有一个mysql 8.0.20数据库,它有一个表,描述上传的图像文件的元数据。其中一列包含一个json对象,其中包含一大堆我正在尝试清理的自动生成的数据。
这个json对象有时包含一个或多个与特定模式匹配的变量键名。像这样的
{
"image_name": "P10043983",
"image_size": "60138",
"image_original_exifdata": "{
'FileName':'P10043983.jpg',
'MimeType':'image/jpeg',
'UndefinedTag:0xA435':'\u0000\u0000\u0000\u0000\u0000\u0000'
}"
}
那个 UndefinedTag:0xA435
(有许多排列)是问题所在。它是指各种图像exif的细节,如镜头类型,gps数据等。这是我不感兴趣的东西,而这些相机大多不提供,所以我已经结束了一个表格充满了无用的字符长字符串只是占用空间。我希望那些json字段在性能和清洁度方面消失。
有没有一种运行sql查询的方法可以使用通配符或正则表达式来查找(理想情况下,删除)所有这些讨厌的变量键?我希望避免手动列出所有可能要搜索的“unfinedtag”键,而且我也不喜欢将整个内容作为字符串处理并用regexp\u替换调用时的结果(有时会留下尾随逗号,这会破坏我的json,我很难避免/解决)。
我知道一些json函数,比如 JSON_SEARCH()
接受通配符,但它明确表示搜索路径不能以通配符结尾(因此不接受通配符) UndefinedTag:0x**
允许)。我追求的许多功能(例如。, JSON_REMOVE()
)根本不接受通配符。见鬼,我甚至很难找到已知的密钥,我怀疑密钥名中愚蠢的冒号可能与此有关。
那么,我该如何清理我的表并消除这个未定义标签问题的多种形式呢?也许回到regex\u replace计划来处理后面的逗号更容易?
暂无答案!
目前还没有任何答案,快来回答吧!