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

如何在指定字符串中查找目标数字并筛选符合匹配条件的数据行

多数据库实现方案

核心需求为判断两个逗号分隔数字的字符串字段,同时包含指定的所有目标值,不同数据库可通过自带的字符串处理函数直接实现:

MySQL 实现

使用MySQL原生FIND_IN_SET函数判断指定值是否存在于逗号分隔字符串中:

SELECT ID 
FROM 你的表名
WHERE 
  FIND_IN_SET('100', STRING1) > 0 
  AND FIND_IN_SET('201', STRING1) > 0
  AND FIND_IN_SET('1', STRING2) > 0
  AND FIND_IN_SET('4', STRING2) > 0;

PostgreSQL 实现

先将字符串转为整数数组,再用数组包含运算符@>判断是否覆盖所有目标值:

SELECT ID
FROM 你的表名
WHERE 
  string_to_array(STRING1, ',')::int[] @> ARRAY[100,201]
  AND string_to_array(STRING2, ',')::int[] @> ARRAY[1,4];

SQL Server 实现(2016及以上版本)

通过STRING_SPLIT拆分字符串后分组统计匹配数量,匹配数等于目标值数量即符合条件:

SELECT t.ID
FROM 你的表名 t
CROSS APPLY STRING_SPLIT(t.STRING1, ',') s1
CROSS APPLY STRING_SPLIT(t.STRING2, ',') s2
WHERE s1.value IN ('100','201')
  AND s2.value IN ('1','4')
GROUP BY t.ID
HAVING COUNT(DISTINCT s1.value) = 2 AND COUNT(DISTINCT s2.value) = 2;

提示:用逗号分隔存储多值的设计不符合数据库第一范式,仅适合小数据量简单场景使用。如果这类查询需求较多、数据量较大,建议将多值字段拆分为独立关联表存储,查询性能和可维护性都会大幅提升。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:24:00