将逗号分隔的字符串简化为行

时间:2018-10-16 15:10:03

标签: sql sql-server

请注意,这是针对SQL Server 2014的,因此无法使用各种内置函数,并且我没有创建函数的权限。

我的数据如下:

advisor_rep_id  individual_url_rep_codes    split_url_rep_codes
57444           9289                        9569
4407            397                         7128, 9226
52779           8613, 8614, 8616            (null)
56732           (null)                      9193, 4423
56713           3456                        9193, 4423

我正在尝试将individual_url_rep_codessplit_url rep_codes的每个变体转换为一列(许多行)urls。请注意,每个individual_url_rep_codes的{​​{1}}和split_url rep_codes实例都可能超过5个。

预期输出:

advisor_rep_id

在下面的尝试中,我使用advisor_rep_id urls 57444 9289 57444 9569 4407 397 4407 7128 4407 9226 52779 8613 52779 8614 52779 8616 56732 9193 56732 4423 56713 3456 56713 9193 56713 4423 中的第一个变量,然后使用individual_url_rep_codes中的第二个变量,然后使用{{1}中的第一个变量,使用union },然后在individual_url_rep_codes中使用union中的第二个变量,我将继续合并以覆盖字符串中所有用逗号分隔的变量。

必须有另一种方式!有任何想法吗? 仅供参考,我知道我在输出中得到了一堆空值,这将需要摆脱子查询。

split_url_rep_codes

1 个答案:

答案 0 :(得分:4)

这是一个简单的XML解析,略有不同……我们只是将两个rep_code列连接起来。

示例

NamedObject

返回

Private Sub fillsubjectcombo()

    If yearlabel.Text = "Grade 11" Or course_label.Text = "STEM" Then
        'use and instead of or if both condiions must be true
        If semester_label.Text = "Second semester" Then

            Dim str As String

            con.Close()
            con.Open()

            str = "SELECT* FROM [Subjects] ORDER BY [STEM G11 SS]"
            cmd = New SqlClient.SqlCommand(str, con)
            cmd.CommandText = str
            cmd.Connection = con
            drd = cmd.ExecuteReader
            subject_cbx.Items.Clear()

            While (drd.Read())

                subject_cbx.Items.Add(drd("STEM G11 SS"))

            End While

            cmd.Dispose()
            drd.Close()
            con.Close()



        ElseIf semester_label.Text = "First semester" Then

            Dim sti As String

            con.Close()
            con.Open()

            sti = "SELECT* FROM [Subjects] ORDER BY [STEM G11 FS]"
            cmd = New SqlClient.SqlCommand(sti, con)
            cmd.CommandText = sti
            cmd.Connection = con
            drd = cmd.ExecuteReader
            subject_cbx.Items.Clear()

            While (drd.Read())

                subject_cbx.Items.Add(drd("STEM G11 FS"))

            End While

            cmd.Dispose()
            drd.Close()

            con.Close()
        End If

    End If
End Sub