如何在MySQL中查询获取逗号右侧的完整匹配值
MySQL查询匹配实现方案
假设你的数据表名为your_table,存储目标格式内容的列名为target_col,列内存储格式为[左侧值],[右侧值]的逗号分隔结构,可使用以下查询语句实现需求,其中@search_str为你传入的查询参数:
SELECT * FROM your_table WHERE -- 针对6167做特殊匹配 IF(@search_str = '6167', SUBSTRING_INDEX(target_col, ',', -1) = '6167', -- 其他查询参数校验末尾是否带逗号 IF(RIGHT(@search_str, 1) = ',', -- 带逗号则匹配右侧内容以查询字符串开头的所有行 SUBSTRING_INDEX(target_col, ',', -1) LIKE CONCAT(@search_str, '%'), -- 不带逗号直接返回无结果 FALSE ) );
效果验证
- 传入
@search_str = '6167':返回所有逗号右侧值正好为6167的行,符合规则1要求 - 传入
@search_str = '67,':返回所有逗号右侧内容以67,开头的匹配行,符合规则2要求 - 传入任意末尾不带逗号且不等于6167的查询字符串,直接返回空结果,符合规则3要求
如果你不需要对6167做特殊处理,而是需要所有不带逗号的查询字符串都仅匹配逗号右侧完整值,可调整为通用版本:
SELECT * FROM your_table WHERE IF(RIGHT(@search_str, 1) = ',', SUBSTRING_INDEX(target_col, ',', -1) LIKE CONCAT(@search_str, '%'), SUBSTRING_INDEX(target_col, ',', -1) = @search_str );
内容的提问来源于stack exchange,提问作者bin
相关产品推荐
相关产品推荐

