我在 MySQL 数据库(5.7.25)中有一个 JSON 列,可以包含任何类型的 JSON 结构(所以我没有任何对所有行都通用的属性)。
我怎样才能通过 laravel 雄辩地执行一个查询,以搜索行匹配的字符串在一个属性的 JSON 列?
我试着这么做:
JSON_CONTAINS(`payload`, "key")
但是 mySQL 抛出了以下异常:
Invalid JSON text in argument 2 to function json_contains: "Invalid value." at position 0
例如,如果结构类似于:
{first_name:"John", "last_name":"Smith", "company":"Demo Company"}
我想搜索任何属性中包含单词“ Demo”的所有行(如果字符串是 json 属性值的子字符串)。
我发现的唯一工作方式如下:
JSON_SEARCH(payload, 'one', '%Demo%') IS NOT NULL
但是它似乎有点慢,所以我想知道是否有更快的方法。