dcp*_*ers 3 sql t-sql sql-server csv sql-server-2005
我的表中有2列,名为TaskSet和SkillsSelected.
样本数据如下:
TaskSet | SkillsSelected
--------------------------------------------------
SK000001, SK000004, SK000002 | SK000001, SK000002, SK000003
SK000002 | SK000002, SK000003, SK000004
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它使用逗号分隔数据.我想要一个查询,它将给我的记录不是来自TaskSet中不存在的SkillsSelected,所以在这种情况下将返回:
SK000003
SK000003, SK000004
Run Code Online (Sandbox Code Playgroud)
在SQL Server中处理逗号分隔列表的最佳方法是创建一个返回表类型的UDF.请参阅此链接了解详情.MS文档声称CLR UDF更快,但这里是使用中两个选项的实际比较.
一旦到位,您可以使用:
SELECT t.*
FROM TABLE t
WHERE EXISTS(SELECT value
FROM dbo.split(t.taskset)
INTERSECT
SELECT value
FROM dbo.split(t.skillsselected))
Run Code Online (Sandbox Code Playgroud)
参考:
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |