一场景:在IM即时通讯服务中,实现了用户之间的聊天功能。其中有一张聊天记录库表设计如下,在content的字段中保存了用户之间的聊天信息记录。
content中的数据可能为纯文本、或多种格式的json串数据(前端需要解析展示):
二需求:模糊匹配用户的聊天内容,实现只匹配用户输入的文字、推送信息中的页面显示出的信息。json串中不在界面中展示的一些字段例如:“id”、“oneId”属性值不参与模糊匹配。
#查询聊天记录 简单实现 json串非关键字段不进行匹配
SELECT
chat_message.content
FROM
chat_message
WHERE
( chat_message.message_type = 6 AND JSON_EXTRACT(json_remove( chat_message.content,'$.id','$.oneId'), '$.*' ) LIKE concat( "%", '用户输入的模糊匹配的值', "%" ) )
三总结:mysql已经提供给我们进行json串类型数据处理的函数。