逗号将字符串分隔为表

时间:2015-10-06 02:14:21

标签: sql sql-server-2008

我的表格值如下

StudentID | Name | Subscribed Subject |
101       |John  | Maths, Bio, Zoo    |
102       |Mary  | Bio, Zoo           |

我想按如下方式检索信息

StudentID | Name | Subscribed Subject |
101       |John  | Maths              |
101       |John  | Bio                |
101       |John  | Zoo                |
102       |Mary  | Bio                |
102       |Mary  | Zoo                |

有人可以帮助我吗?不使用游标。

3 个答案:

答案 0 :(得分:1)

试试这个

Transaction Controller

{{1}}

答案 1 :(得分:0)

试试这段代码

      SET @STRSQL = 'SELECT ''' + REPLACE(Subscribed_Subject, ',',
                                                ''' ,''') + ''''

            DECLARE @tbl TABLE
                (
                  col1 VARCHAR(100) 

                )

将数据插入临时表,然后尝试从临时表中选择。

            INSERT  INTO @tbl
                    EXECUTE ( @STRSQL
                           )

答案 2 :(得分:0)

您可以使用以下查询来实现此功能。

SELECT A.[StudentID],  
     Split.a.value('.', 'VARCHAR(100)') AS String  
 FROM  (SELECT [StudentID],  
        CAST ('<M>' + REPLACE(Subscribed, ',', '</M><M>') + '</M>' AS XML) AS String  
        FROM  Student) AS A CROSS APPLY String.nodes ('/M') AS Split(a); 

为了您的快速参考,我包括sql小提琴。

SQLFiddle