【发布时间】:2015-04-05 00:39:08
【问题描述】:
我想用给定的输入字符串将函数拆分成两个单独的列。
如果我执行这个函数,我会得到像
这样的行值列表select *
from dbo.Split ('sunday,9,monday,8,tuesday,9, wednesday 8, thursday 8,friday,9, saturday,8')
类似行值的输出
sunday
9
monday
8
tuesday
9
wednesday
8
thursday
8
friday
9
saturday
8
我的分割函数是:
create function dbo.Split
(
@String varchar(max)
)
returns @SplittedValues table
(
Id varchar(50)
)
as
begin
declare @SplitLength int, @Delimiter varchar(5)
set @Delimiter = ','
while len(@String) > 0
begin
select @SplitLength = (case charindex(@Delimiter,@String) when 0 then
len(@String) else charindex(@Delimiter,@String) -1 end)
insert into @SplittedValues
select substring(@String,1,@SplitLength)
select @String = (case (len(@String) - @SplitLength) when 0 then ''
else right(@String, len(@String) - @SplitLength - 1) end)
end
return
end
但我需要两列天(第一个参数的天数列表),小时,
+-----------+-------+
| Days | Hours |
+-----------+-------+
| Sunday | 9 |
| Monday | 8 |
| Tuesday | 9 |
| Wednesday | 8 |
| Thursday | 8 |
| Friday | 9 |
| saturday | 8 |
+-----------+-------+
我该如何解决这个问题?
【问题讨论】:
-
在此处查看各种将
CSV转换为rows的方法并进行性能比较 -
@Fireblade 检查哪里?我没有看到链接
-
@t-clausen.dk - 哎呀错过了添加链接sqlperformance.com/2012/07/t-sql-queries/split-strings
标签: sql-server function split