我有" A001等数据; A009; A011-A015; A055; B101-B104"
;只会将数据拆分成行。
+------+
| A001 |
+------+
| A009 |
+------+
| A055 |
+------+
- 只会将数据拆分成行。
+------+
| A011 |
+------+
| A012 |
+------+
| A013 |
+------+
| A014 |
+------+
| A015 |
+------+
| B101 |
+------+
| B102 |
+------+
| B103 |
+------+
| B104 |
+------+
SQL查询如何做到这一点?
答案 0 :(得分:0)
这将执行虚线拆分
可能会创建一个表值函数来返回结果集
declare @dashed varchar(100) = 'A005-A015'
declare @start int = cast(substring(@dashed,2,3) as int)
,@end int = cast(substring(@dashed,7,3) as int)
,@prefix varchar(1) = left(@dashed,1)
declare @val int = @start
declare @t table(vals varchar(10))
while(@val<=@end)
BEGIN
insert into @t values(@prefix + RIGHT('00'+CAST(@val as varchar(3)),3))
set @val=@val+1
END
select * from @t
--Tally solution
--This should be done once for real and never have to do it again
declare @t2 table (num int)
declare @i int = 0
while(@i <200)
BEGIN
insert into @t2 values(@i)
set @i=@i+1
END
select @prefix + RIGHT('00'+CAST(num as varchar(3)),3)
from @t2
where num between @start and @end