在SQL查询问题中拆分

时间:2011-01-31 06:36:04

标签: sql database

我在SQL中有一个字符串假设为“ABCDEF”。

我想以下表格式显示: -

A
B
C
D
E
F

如果不使用CURSOR等,我怎么能这样做。

2 个答案:

答案 0 :(得分:0)

with rec(recText, letterno) AS
(
    Select LEFT('ABCDEF',1),
            1
    Union all
    Select Left(RIGHT('ABCDEF',len('ABCDEF') - rec.letterno),1),
            letterno +1
    from rec
    where   rec.letterno < len('ABCDEF')
)
select top 1 STUFF( (   
SELECT ' '+recText FROM rec   FOR XML PATH('') ), 1, 1, '')  FROM rec

t-sql 2008解决方案不知道这是否适合您的问题

答案 1 :(得分:0)

在Sql Server中,您可以使用

  • SUBSTRING函数从字符串中获取一个字母
  • master..spt_values获取预定义的数字序列(最长为2047)

来自变量

declare @str varchar(100) set @str = 'ABCDEF'
select SUBSTRING(@str, number, 1)
from master..spt_values
where type='P' and number between 1 and LEN(@str)
order by number

如果您要从表格中的列分割

create table strtest (id int, str varchar(100))
insert strtest select 1, 'abcdef'
insert strtest select 2, 'qwertyui'

select t.str, v.number, SUBSTRING(t.str, v.number, 1)
from strtest t
inner join master..spt_values v
  on v.type='P' and v.number between 1 and LEN(t.str)
order by t.id, v.number

如果您正在使用任何其他DBMS,您可以执行类似的操作,但如果没有准备就可以创建数字表。