gpt4 book ai didi

sql - 使用拥有规则的多个分隔符(和 - )拆分 sql 中的数据

转载 作者:行者123 更新时间:2023-12-01 10:49:12 25 4
gpt4 key购买 nike

我有这样的数据 1,2,3,4-8,10,11
我想将数据拆分为具有以下 2 个规则的行:

  • ,只会将数据拆分成行。例 1,2,3 变为:
    1
    2
    3
  • -将拆分为系列号。例 4-8 变为:
    4
    5
    6
    7
    8

  • SQL 查询如何做到这一点?请回答并保持简单。

    最佳答案

    只要您的间隔小于 2048(让我知道该数字是否可以更高)并且您 @data 遵循您当前的语法,这就会起作用:

    declare @data varchar(50) = '1,2,3,4-8,10,11'

    ;with x as
    (
    SELECT t.c.value('.', 'VARCHAR(2000)') subrow
    FROM (
    SELECT x = CAST('<t>' +
    REPLACE(@data, ',', '</t><t>') + '</t>' AS XML)
    ) a
    CROSS APPLY x.nodes('/t') t(c)
    ), y as
    (
    SELECT
    CAST(coalesce(PARSENAME(REPLACE(subrow, '-', '.'), 2),
    PARSENAME(REPLACE(subrow, '-', '.'), 1)) as int) f,
    CAST(PARSENAME(REPLACE(subrow, '-', '.'), 1) as int) t from x
    )
    select z.number from y
    cross apply
    (select y.f + number number
    from master..spt_values
    where number <= y.t - y.f and type = 'p'
    ) z

    结果:
    1
    2
    3
    4
    5
    6
    7
    8
    10
    11

    关于sql - 使用拥有规则的多个分隔符(和 - )拆分 sql 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22476475/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com