【问题标题】:Split one cell into multiple rows in SQL Server在 SQL Server 中将一个单元格拆分为多行
【发布时间】:2022-01-18 10:56:42
【问题描述】:

通过复制 id 列并仅使用原始文本的一部分,将单个单元格值拆分为多行。除了使用 UNION 以外的任何方式。

这是样本数据

create table Spl 
(
     id INT, 
     Name VARCHAR(100)
)

insert into Spl values (1, '4334ASTBSTCST')
insert into Spl values (2, '7887ASTBSTCST')
insert into Spl values (3, '8793ASTBSTCST')

【问题讨论】:

  • UNION ALL、SUBSTR 等
  • 抱歉,忘了在原问题中提及,正在寻找其他没有联合所有的方法
  • 请阅读this,了解一些改进问题的技巧。你试过什么?您为什么将图像用于文本数据?

标签: sql database tsql sql-server-2008


【解决方案1】:

您可以将cross applyvalues 一起使用:

select Id, v.[Name] 
from spl
cross apply (
    values
    (Left([name],7)),
    (Left([name],4) + Substring([name],8,3)),
    (Left([name],4) + Substring([name],11,3))
)v([Name])

【讨论】:

    【解决方案2】:

    交叉应用的一个版本

    select Id, left([name],4) + substring([name], v.pos, v.len)
    from spl
    cross apply (
        values
        ( 5,3),
        ( 8,3),
        (11,3)
    ) v(pos,len)
    

    【讨论】:

    • 不错的替代想法。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-26
    • 1970-01-01
    • 1970-01-01
    • 2021-09-24
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多