SQL正则表达式检查JSON数组中是否存在至少一项

Dmi*_*nin 1 regex mysql sql

我在MySQL 5.6中有一个表,其文本类型字段为“ custom_info”,该字段以字符串形式存在JSON。这样的JSON的存在字段“ clients”带有数组。

为了选择“客户”为空的记录,我使用查询:

select custom_info from users where custom_info like '%"clients":[]%'
Run Code Online (Sandbox Code Playgroud)

如何在“客户”数组至少存在一个元素的情况下检索记录?

Cra*_*ons 5

MySQL本机支持JSON。建议不要将其存储为JSON数据类型,而不是将其存储为字符串文字。这样,它将打开一些本机函数,例如JSON_CONTAINSJSON_EXTRACTJSON_ARRAYJSON_OBJECT

然后,您可以使用JSON_CONTAINSJSON_EXTRACT评估您的结果;就像是:

SELECT * 
FROM   custom_info
WHERE  JSON_CONTAINS(clients, 'some_value_youd_expect_to_be_here')
Run Code Online (Sandbox Code Playgroud)

要么:

SELECT * 
FROM   custom_info
WHERE  JSON_EXTRACT('clients', '$[0]') is not null
Run Code Online (Sandbox Code Playgroud)