求帮助
如下
名字;产品
小李;A/AB/C/A
小张;B/C/A/D
。。。
想把产品拆开,并按从左到右的顺序编号。
即
名字;产品
小李;1_A
小李; 2_AB
小李; 3_C
小李; 4_A
。。。
------解决方案--------------------
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2014-04-08 17:41:18
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([名字] varchar(4),[产品] varchar(8))
insert [tb]
select '小李','A/AB/C/A' union all
select '小张','B/C/A/D'
--------------开始查询--------------------------
SELECT
名字,LTRIM(ROW_NUMBER()OVER(PARTITION BY 名字 ORDER BY GETDATE()))+'_'+产品 AS 产品
FROM
(
Select
a.名字,substring(a.产品,b.number,charindex('/',a.产品+'/',b.number)-b.number) AS 产品
from
Tb a join master..spt_values b
ON B.type='p' AND B.number BETWEEN 1 AND LEN(A.产品)
where
substring('/'+a.产品,b.number,1)='/')t
----------------结果----------------------------
/* 名字 产品
---- ---------------------------------
小李 1_A
小李 2_AB
小李 3_C
小李 4_A
小张 1_B
小张 2_C
小张 3_A
小张 4_D
(8 行受影响)
*/
------解决方案--------------------
postgresql建议到postgresql专区问,这里是sqlserver的地方,语法不同