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

Mysql SQL正则表达式,以检查JSON数组中是否至少存在一个项,mysql,sql,regex,Mysql,Sql,Regex,我在MySQL 5.6中有一个表,其中有一个文本类型字段“custom_info”,它以字符串形式存在于JSON中。这样一个JSON的exist字段“clients”带有数组 为了选择“客户机”为空的记录,我使用查询: select custom_info from users where custom_info like '%"clients":[]%' 如何检索“clients”数组至少存在一个元素的记录?MySQL本机支持JSON。我建议不要将其存储为字符串文字,而是将其存储为字符串文字

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

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

select custom_info from users where custom_info like '%"clients":[]%'

如何检索“clients”数组至少存在一个元素的记录?

MySQL本机支持JSON。我建议不要将其存储为字符串文字,而是将其存储为字符串文字。这样,它将打开几个本机函数,如、、和

然后,您可以使用或评估您的结果;比如:

选择*
从自定义信息
其中JSON包含(客户机“一些您希望在这里存在的值”)
或:

选择*
从自定义信息
其中JSON_EXTRACT('clients','$[0]')不为空

MySQL本机支持JSON。我建议不要将其存储为字符串文字,而是将其存储为字符串文字。这样,它将打开几个本机函数,如、、和

然后,您可以使用或评估您的结果;比如:

选择*
从自定义信息
其中JSON包含(客户机“一些您希望在这里存在的值”)
或:

选择*
从自定义信息
其中JSON_EXTRACT('clients','$[0]')不为空

如果要将字段保留为文本类型,可以使用至少匹配一个字符的

select custom_info from users where custom_info like '%"clients":[_%]%'

如果您想将字段保留为文本类型,可以使用至少匹配一个字符的
\uu%

select custom_info from users where custom_info like '%"clients":[_%]%'

由于您只希望在
“clients”之后返回没有
]
的条目:[
您可以使用

where custom_info REGEXP '"clients":\\[[^]]'

\[
实际上是一个与文本
[
字符匹配的
\[
模式,而
[^]
是一个与任何字符匹配的反括号表达式,但与字符a
]

匹配,因为您只想在
客户端之后返回没有
]
的条目:[
您可以使用

where custom_info REGEXP '"clients":\\[[^]]'

\[
实际上是一个与文本
[
字符匹配的
\[
模式,而
[^]
是一个与任何字符匹配的反括号表达式,但与
]

请尝试
where custom\u info REGEXP'“clients”:\[^]]“
似乎很有效!您可以将其作为单独的答案编写,以便我将其标记为解决方案。谢谢!如果您的
mysql
足够新,则有一些函数可以扩展到JSON。请使用它们。尝试
where custom_info REGEXP”“clients:\\[^]]“
似乎很有效!您可以将其作为单独的答案编写,以便我将其标记为解决方案。谢谢!如果您的
mysql
足够新,则有一些函数可以扩展到JSON。使用它们。感谢您的快速响应!不幸的是,我无法更改字段的类型,因此我尝试对其进行分析感谢您的快速响应!谢谢我无法更改字段的类型以便尝试解析itI我注意到George Pant提供的选项出于某种原因找到了更多记录,试图理解差异您的案例正好找到了我期望的记录,谢谢,标记为解决方案,如果您投票给我的问题,我将不胜感激。我注意到George Pant提供的选项找到了more records出于某种原因,试图了解差异您的案例准确地找到了我期望的记录,谢谢,标记为解决方案,如果您对我的问题进行投票,我们将不胜感激。我发现您的案例包括带有“客户”的记录:[],因此Wiktor Stribiżew的情况似乎更准确。此版本仅在json中“clients”之后没有其他数组的情况下有效,如您提供的示例所示。如果json中“clients”之后有其他数组,它将不起作用,因为%将至少匹配一个字符(包括)和最后一个字符]将由另一个数组匹配…我发现您的案例包括带有“clients”:[]的记录,因此Wiktor Stribiżew的案例更准确。此版本仅在json中“clients”之后没有其他数组的情况下有效,如您提供的示例。如果“clients”之后有其他数组在json内部,它将不起作用,因为%将至少匹配一个字符(包括]),而最后一个]将由另一个数组匹配。。。。