SQL Server 简单比较场景下如何比对指定列内容
SQL Server 逗号分隔字段与单值字段的逐行匹配校验
场景说明
在基础数据校验场景中,需要逐行完成两个字段的内容比对,各字段的存储规则如下:
Column A:存储逗号拼接的数值列表Column B:存储对应当前行的单个待匹配数值Column C:存储匹配结果标记
参考示例数据:
Column A Column B Column c 10,16,56,76 56 good 2,64,74,66 77 missing
匹配校验逻辑
逐行判断Column B的取值是否存在于当前行Column A拆分后的元素集合中:
- 当值完全匹配时,
Column C对应标记为good,如示例第一行,拆分后的Column A元素包含56,与同行Column B的值一致 - 当值无匹配时,
Column C对应标记为missing,如示例第二行,拆分后的Column A元素无77,与同行Column B的值不一致
实现参考
- SQL Server 2016及以上版本可直接使用内置
STRING_SPLIT函数拆分Column A的逗号分隔内容,结合EXISTS判断快速完成匹配校验 - 低版本SQL Server可通过自定义逗号分隔值解析的表值函数完成字段拆分,再执行匹配判断
内容的提问来源于stack exchange,提问作者Surya Gunisetti
相关产品推荐
相关产品推荐

