我有两个表,第一个,dbo.QuestionaireResponse包括PersonID(int not null),ApplicationID(int not null)和RaceIDs列。 PersonID是一个基本的ID列,但是RaceIDs是一个varchar(255),它包含逗号分隔的ID字符串(我知道的设计不好)。另一个表是一个类型表dbo.Race,有两列,RaceID(int identity)和RaceDescription(某种varchar)。我需要以下列两种格式之一输出一个表:
在我的研究中,我发现了这篇文章http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/,但它并不适合这个问题,因为必须在列中的每个记录上执行拆分。
除了数据之外,我最终还是将类型表传递给了web服务,但我很好奇是否还有其他可行的解决方案。在这种情况下,性能很重要,尽管类型表的数量或记录数量很少。
有关如何在sql server中执行此操作的任何建议吗?
答案 0 :(得分:1)
试试这个:
SELECT q.PersonID, r.RaceDescription
FROM dbo.QuestionaireResponse q JOIN dbo.Race r
ON ',' + q.RaceIDs + ',' LIKE '%,' + CONVERT(varchar(10),r.RaceID) + ',%';