You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MySQL正则表达式筛选含数字生产者名称返回OK无结果问题

解决方案

问题根源

你直接用正则匹配JSON字符串的写法存在两个核心问题:

  1. 正则仅匹配名称以数字开头的情况,而非名称中包含数字;
  2. 硬编码JSON的空格和键顺序,一旦JSON格式有细微变化(比如键名前后空格不同、其他键排在前面),正则就会失效。

推荐方案:用MySQL JSON函数提取字段(更可靠)

MySQL 5.7及以上支持JSON操作函数,直接提取metadata里的name字段再判断是否含数字,完全规避JSON格式变化的问题:

-- 写法1:使用JSON_EXTRACT + JSON_UNQUOTE
SELECT * FROM producers 
WHERE JSON_UNQUOTE(JSON_EXTRACT(metadata, '$.name')) REGEXP '[0-9]';

-- 写法2:简化的->>运算符(等价于上面的组合),更简洁
SELECT * FROM producers 
WHERE metadata->>'$.name' REGEXP '[0-9]';

若坚持用正则(不推荐)

如果一定要通过正则匹配,需要兼容JSON的合法格式变化,同时匹配任意位置的数字:

SELECT * FROM producers 
WHERE metadata REGEXP '"name"[[:space:]]*:[[:space:]]*".*[0-9].*"';

[[:space:]]*用来匹配键名和冒号前后的任意空格,.*[0-9].*匹配包含数字的名称内容。

内容的提问来源于stack exchange,提问作者Ima

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 21:36:03