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

如何在MS SQL SERVER中对逗号分隔值的字段使用WHERE子句

MSSQL SERVER 逗号分隔字符串字段匹配查询方案

注意事项

直接使用LIKE '%匹配值%'会出现误匹配问题,例如查询ELITE时,会错误命中包含SUPERELITE的记录,因此推荐使用以下两种方案:


方案1:SQL Server 2016及以上版本(推荐)

使用SQL Server内置的STRING_SPLIT函数拆分字符串后匹配,准确性最高:

-- 示例:查询字段包含ELITE的所有行
SELECT DISTINCT t.*
FROM 你的表名 t
CROSS APPLY STRING_SPLIT(t.你的字段名, ',') s
WHERE s.value = 'ELITE'

-- 如需匹配多个值,例如同时包含ELITE或DELUXE
SELECT DISTINCT t.*
FROM 你的表名 t
CROSS APPLY STRING_SPLIT(t.你的字段名, ',') s
WHERE s.value IN ('ELITE', 'DELUXE')

注:加DISTINCT是为了避免一行存在多个匹配值时返回重复记录


方案2:SQL Server 2016以下低版本

通过给字段前后拼接逗号的方式避免误匹配,不需要额外自定义拆分函数:

-- 示例:查询字段包含ELITE的所有行
SELECT *
FROM 你的表名
WHERE ',' + 你的字段名 + ',' LIKE '%,ELITE,%'

-- 如需匹配多个值,例如同时包含ELITE或DELUXE
SELECT *
FROM 你的表名
WHERE ',' + 你的字段名 + ',' LIKE '%,ELITE,%'
OR ',' + 你的字段名 + ',' LIKE '%,DELUXE,%'

特殊场景处理

如果你的字段存储内容本身包含<strong>、</strong>标签,直接调整匹配值即可,例如:

WHERE ',' + 你的字段名 + ',' LIKE '%,<strong>ELITE</strong>,%'

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 02:18:05