我有订单表
OrderId OrderStatusId CurrencyId PromotionCode
------------------------------------------------------
137 5 1 123a-123d
138 5 1 123a-123d-234c
我想像这样拆分PromotionCode
列:
结果:
OrderId OrderStatusId CurrencyId PromotionCode
-----------------------------------------------------
137 5 1 123a
137 5 1 123d
138 5 1 123a
138 5 1 123d
138 5 1 234c
请帮帮我......
是否有可能......以任何方式尽可能帮助我......
答案 0 :(得分:2)
如果促销代码总是4个字符长,最简单的方法可能是联合:
select id, substring(code,1,4)
from YourTable
where LEN(code) >= 4
union all
select id, substring(code,6,4)
from YourTable
where LEN(code) >= 9
union all
select id, substring(code,11,4)
from YourTable
where LEN(code) >= 14
<etc>
要获得更灵活的解决方案,请查看其中一种Split functions。在数据库中创建此函数后,您可以调用它:
select t.id, s.items
from YourTable t
cross apply
dbo.Split(t.code,'-') s
两个查询都会根据您的答案中的要求生成结果。