使用SQL Server将逗号分隔值拆分为行

时间:2015-12-03 02:37:00

标签: sql sql-server

我有一张表格如下

姓名

    xAxis: {
                categories: ['Africa', 'America', 'Asia', 'Europe', 'Oceania'],
                title: {
                    text: null
                }
            },
            yAxis: {
                min: 0,
                title: {
                    text: 'Population (millions)',
                    align: 'high'
                },
                labels: {
                    overflow: 'justify'
                }
            }


series: [{
            name: 'Year 1800',
            data: [107, 31, 635, 203, 2]
        }, {
            name: 'Year 1900',
            data: [133, 156, 947, 408, 6]
        }, {
            name: 'Year 2012',
            data: [1052, 954, 4250, 740, 38]
        }]

等等......

我已经有一个遍历此表中所有行的迭代函数,并且我有循环当前所在行的ID。我想删除当前行$select列中包含NameID | Name | NickNames -------------------------- 1 | Richard | Rich, Dick 2 | Sam | Samuel, Samantha, Sammy 3 | John | Jonathan, Johnny 列的表格中的所有行。

例如,第4行可能是:

'Name'

我希望删除此行,因为'Johnathan'出现在第3行的NickNames中。

基本上我试图选择NickNames列作为一系列行而不是原始的CSV类数据。与This Blog Post

完全相反

在我看来,它看起来像是:

'NickNames'

提前致谢!

1 个答案:

答案 0 :(得分:1)

您不需要循环来执行此操作。我承认以下可能不是最快的,但它只是一个声明:

delete from names n
    where exists (select 1
                  from names n2
                  where ',' + n2.nicknames + ',' like '%,' + n.name + ',%' and
                        n2.nameid <> n.nameid
                 );

注意:您不应该在逗号分隔的列表中存储事物列表。关系数据库每列只应有一个值。联结表是正确的方法。