如何解析在列,并添加更多的记录表?(how to parse on column and add m

2019-07-31 12:13发布

我有表TB1(COL1,COL2),COL2为varchar(50)。 例如,

col1    col2
item1   abc
item2   a
item3   ed

我想写一个存储过程来解析COL2和创建像下面的一个临时表:

col1    col2
item1   a
item1   b
item1   c
item2   a
item3   e
item3   d

任何人可以帮助我在这里?

Answer 1:

如果您知道该字符串的最大长度,最简单的方法是做一个简单的工会:

select col1, substring(col2, 1, 1) as col2
from t
where len(col2) >= 1 union all
select col1, substring(col2, 2, 1) as col2
from t
where len(col2) >= 2 union all
select col1, substring(col2, 3, 1) as col2
from t
where len(col2) >= 3 union all

如果长度不嫌长,可以做这样的事情,以简化查询:

select col1, substring(col2, nums.seqnum) as col2
from t cross join
     (select row_number() over (order by (select NULL)) as seqnum
      from Infromation_Schema.columns
     ) nums
where len(col2) <= nums.seqnum

另外,您也可以在T-SQL while循环做到这一点。



Answer 2:

试试这个:

您可以使用单个查询得到它

SELECT COL1,SUBSTRING(COL2,NUMBER+1,1) AS COL2
FROM   YOURTABLE T
JOIN   MASTER..SPT_VALUES M
ON     LEN(COL2)>NUMBER
WHERE  M.TYPE='P'


文章来源: how to parse on column and add more records to a table?