MySQL在 VARCHAR 类型的字段中查找包含特定 JSON 键值对的记录

使用MySQL 的 JSON 函数。虽然该字段不是正式的 JSON 类型,但只要存储在其中的数据是有效的 JSON 格式字符串,你就可以使用这些函数来解析和查询数据。

例:

表名为 my_table,字段有 type,name,info,content,其中info字段存储的是json字符串,但是表结构这个字段为varchar(700)。如图:

存储的数据有个特点就是(不同type类型)每行info的json字段都不一样。现在需要查询 info.dsn_type=”native” 的记录的name值。

直接先上查询语句:

SELECT name FROM my_table WHERE 
JSON_VALID(info) 
AND JSON_CONTAINS_PATH(info, 'one', '$.dsn_type')
AND info->>'$.dsn_type' = 'native' 
LIMIT 0,1;

– JSON_VALID(info) 确保只有有效的 JSON 字符串被处理
– JSON_CONTAINS_PATH(info, ‘one’, ‘$.dsn_type’) 确保只有有.dsn_type字段才被提取处理
– info->>’$.dsn_type’ 就是等同于 JSON_UNQUOTE(JSON_EXTRACT(info,’$.dsn_type’))
– $.dsn_type 是 JSON 路径表达式

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注