字符串拆分为整列的表

时间:2014-06-17 07:32:51

标签: sql sql-server string replace string-split

我有两个表,第一个,dbo.QuestionaireResponse包括PersonID(int not null),ApplicationID(int not null)和RaceIDs列。 PersonID是一个基本的ID列,但是RaceIDs是一个varchar(255),它包含逗号分隔的ID字符串(我知道的设计不好)。另一个表是一个类型表dbo.Race,有两列,RaceID(int identity)和RaceDescription(某种varchar)。我需要以下列两种格式之一输出一个表:

  1. PersonID,RaceDescription为一对多关系
  2. PersonID,RaceDescriptions(来自种族描述列的以逗号分隔的值字符串)
  3. 在我的研究中,我发现了这篇文章http://ole.michelsen.dk/blog/split-string-to-table-using-transact-sql/,但它并不适合这个问题,因为必须在列中的每个记录上执行拆分。

    除了数据之外,我最终还是将类型表传递给了web服务,但我很好奇是否还有其他可行的解决方案。在这种情况下,性能很重要,尽管类型表的数量或记录数量很少。

    有关如何在sql server中执行此操作的任何建议吗?

1 个答案:

答案 0 :(得分:1)

试试这个:

SELECT q.PersonID, r.RaceDescription
FROM dbo.QuestionaireResponse q JOIN dbo.Race r 
ON ',' + q.RaceIDs + ','  LIKE  '%,' + CONVERT(varchar(10),r.RaceID) + ',%';

SQL Fiddle