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

如何在SQL Server中精准查询逗号分隔姓名列表中的指定姓名

问题原因

你当前的LIKE '%Mike%'写法是模糊匹配所有包含Mike子串的内容,第二行记录的Mikem包含Mike子串,所以也被命中,不符合你精准匹配逗号分隔列表中独立的Mike项的需求。


方案1:分隔符拼接匹配(无需拆分字符串,实现简单)

利用你存储的人名分隔符为, (逗号+空格)、每行行尾自带逗号的特点,给字段前拼接, 后匹配包含,@Person,的内容,写法如下:

DECLARE @Person nvarchar(200)
SET @Person = 'Mike'

SELECT *
FROM [AdventureWorks2019].[dbo].[Person_Table]
WHERE ', ' + Person LIKE '%,' + @Person + ',%'

方案2:使用STRING_SPLIT拆分后精准匹配(SQL Server 2016+支持,更规范)

SQL Server 2019原生支持STRING_SPLIT函数,可以把逗号分隔的内容拆分为独立行后做等值匹配,完全避免模糊匹配的误判问题:

DECLARE @Person nvarchar(200)
SET @Person = 'Mike'

SELECT DISTINCT t.*
FROM [AdventureWorks2019].[dbo].[Person_Table] t
CROSS APPLY STRING_SPLIT(REPLACE(t.Person, ' ', ''), ',') s
WHERE TRIM(s.value) = @Person

最优长期方案

当前用单字段存储逗号分隔多值属于不符合数据库设计范式的实现,不仅查询性能差、容易出现匹配误判,也无法加索引优化。建议调整表结构,新增人员子表,每个人名单独存储为一行,和主表做关联查询,性能和可维护性都会大幅提升。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:48:01